我正在尝试读取 C 程序中的无线连接链接质量。
我愿意:
for(;;){
rf_line = popen("cat /proc/net/wireless | grep wlan0", "r");
fgets(line, 80, rf_line);
pclose(rf_line);
...
//more code
}
在带有 Wheezy 08/12 图像的 Raspberry Pi 上,它崩溃并显示 errno 32,损坏的管道。如果我cat /proc/net/wireless | grep wlan0
从控制台调用,它工作正常。
另外,如果我尝试使用 gdb 进行调试,则不会发生错误。在我装有 Linux Mint 14 的笔记本电脑上,它永远不会发生。
我试图通过system(...)
拨打电话来防止这种情况发生。即使使用bash -c ...
.
我也试过,不写到标准输出和文件,没有运气。
编辑:
与
rf_line = popen("/bin/grep wlan0 /proc/net/wireless", "r");
将行的大小增加到 200 没有效果。
我有同样的结果,errno 32。
编辑:
与
rf_line = fopen("/proc/net/wireless","r");
我有同样的结果,errno 32。
然而,这导致了这样的建议,即 popen 无法正常工作,因为它是唯一剩下的管道。
Fopen / popen 被频繁调用,这可能是问题吗?
有没有人知道我接下来能做什么?
问候,CK