我有下面的函数isEthernetCableConnected(),我在一个连续循环的线程中调用它。很长一段时间后,我开始看到日志“无法打开/sys/class/net/eth0/carrier”。这怎么可能呢?如果这是可能的,那么请给我一些想法如何打开文件每次。
ETH_FILE_CARRIER /sys/class/net/eth0/carrier
int isEthernetCableConnected(){
FILE *fp = fopen(ETH_FILE_CARRIER, "r");
int result;
if(fp == NULL) {
CLog::getInstance()->error("utility",__LINE__,__FILE__,"networked::isEthernetConnected, Could not open %s", ETH_FILE_CARRIER);
return 0;
}
fscanf(fp,"%d",&result);
fclose(fp);
return result;
}发布于 2017-04-28 00:43:05
请参考下面的链接,它可能会帮助你http://wikistack.com/how-to-check-if-ethernet-cable-is-connected-linux
在此链接中,他们尝试以不同的方式打开文件。也许你可以试一试。
https://stackoverflow.com/questions/43659214
复制相似问题