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を開いても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