1

名前付きパイプ (mkfifo() で生成) を介して通信する 2 つの C++ プログラムがあります。

しばらくすると、書き込みプログラムがハングします。FIFOのバッファがいっぱいだと思います。バッファがいっぱいかどうかを FIFO に書き込む前に確認することはできますか?

前もって感謝します!

ルベン

4

2 に答える 2

2

pipeマンページから:

プロセスが完全なパイプ (以下を参照) に書き込もうとすると、 write(2) は、パイプから十分なデータが読み取られて書き込みが完了するまでブロックされます。

O_NONBLOCK解決策は、フラグを指定してパイプを開くことです( openman ページを参照)。

于 2013-05-24T09:38:44.333 に答える