popenを実行したあと
fgetsなどで文字列を取り出すときにバッファが空かどうかを検出する方法はありますか?
これができないと以下のコードを実行すると空のバッファを読み込むときに止まってしまいます。
p = popen("ping6 ***","r");
fgets(buf, BUFSIZ, p);//←結果が返ってこないとここで止まる
ping6には自動的に止まるような機能がないので困っています。
どうすればfgetsで止まらないようにできるのでしょうか?
よろしくお願いします。
環境:FreeBSD 5.4
No.1ベストアンサー
- 回答日時:
fileno()でディスクリプタを取得してfctlでO_NONBLOCKを設定すればfgetsがブロックされなくなるかもしれません。
やったことないので、うまくいくかは分かりませんが...
それに、うまくブロックされなくなったとしても、ping6が標準出力にデータを書き出す前にfgetsが0バイトリードで戻ってきてしまうかもしれませんね。
そうじゃなければ、fileno()してからselectでしょうか。
ご回答ありがとうございます。
ping6にタイムアウト機能を持たせることで解決しました。(pingからソースをコピーしてきました)
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(データベース) Accessのクエリで1フィールドの抽出条件設定をNullでなく全角半角含む空白のみの文字列でない文 1 2023/04/24 15:20
- C言語・C++・C# C言語について。 7 2023/01/26 16:42
- Excel(エクセル) エクセルの表でダブりを解消する方法を、教えてください。 5 2023/04/12 12:11
- C言語・C++・C# C言語について。 7 2022/11/06 10:02
- 日本語 「に」について 9 2022/10/25 16:32
- PHP PHPでテキストファイルに保存した時の改行問題 1 2022/11/19 15:07
- Excel(エクセル) PHPプログラムをエクセルに張り付けると検索ボックスがでてくる! 3 2022/05/08 07:10
- Excel(エクセル) capeofdragonと申します Excel2016を使っておりまして 半角又は全角の任意文字列が 2 2022/10/31 13:51
- C言語・C++・C# C言語について。 7 2023/01/01 09:58
- C言語・C++・C# C言語について 4 2023/01/08 06:07
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VB2010 シリアル受信した情報を...
-
Macターミナルで実行中のプログ...
-
sendkeysにてALT+CTRL+INSERTを...
-
タスクマネージャーのプロセス...
-
マインスイーパ、自動解析プロ...
-
system関数を使用してsuコマン...
-
VB6.0 SHELLで起動...
-
VBAの配列サイズとメモリに関して
-
H8/OSを用いた割り込みで困って...
-
StrConvの使い方について教えて...
-
C++Builderでペイントソフト
-
起動中のEXCELファイル(EXCEL...
-
closeとメモリの開放について
-
プロセスIDからウィンドウハ...
-
explorer.exeが異様にメモリを食う
-
コアダンプって何ですか?
-
メモリが不足しています(VBA)
-
2進数と16進数の相互変換
-
システム資源とは?
-
Windowsプログラムのビジー状態...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
C# シリアル通信でデータ受信...
-
socket: recvはいつ,どれだけ...
-
WriteFile()でのデータ送信がで...
-
winsockでソケット通信の開発を...
-
UDP処理のエラーについて
-
RS232C通信(PC⇔PLC)
-
シリアル通信の出力バッファと...
-
シリアルポート通信
-
SocketのSend関数でのCLOSEの検...
-
「スイッチングハブのバッファ...
-
シリアル通信 大きいサイズの...
-
Connection reset by peer
-
WinsockAPIのrecvfromの受信デ...
-
C#で通信処理。応答がない場合...
-
rs232cでの受信データ(mscomm)...
-
ソケット通信内 read関数について
-
Linuxでのシリアル通信について...
-
バイナリデータ受信時のデータ順
-
RS-232Cでバイナリデータを受信...
-
recv関数の受信結果について
おすすめ情報