名前付きパイプ (mkfifo() で生成) を介して通信する 2 つの C++ プログラムがあります。
しばらくすると、書き込みプログラムがハングします。FIFOのバッファがいっぱいだと思います。バッファがいっぱいかどうかを FIFO に書き込む前に確認することはできますか?
前もって感謝します!
ルベン
名前付きパイプ (mkfifo() で生成) を介して通信する 2 つの C++ プログラムがあります。
しばらくすると、書き込みプログラムがハングします。FIFOのバッファがいっぱいだと思います。バッファがいっぱいかどうかを FIFO に書き込む前に確認することはできますか?
前もって感謝します!
ルベン
pipe
マンページから:
プロセスが完全なパイプ (以下を参照) に書き込もうとすると、 write(2) は、パイプから十分なデータが読み取られて書き込みが完了するまでブロックされます。
O_NONBLOCK
解決策は、フラグを指定してパイプを開くことです( open
man ページを参照)。