RDWR(通信プロセスプロセス用)とパイプ(プロセススレッド)としてFIFOをオープンしています。私が64 KB以上の書き込みをしようとすると、write()で待機します。c - pipe/fifoがいっぱいであるかどうかを理解する
pipe2(fds, O_NONBLOCK);
やパイプを作成した後、あなたがそれを行う必要がある場合:
int flags = fcntl(fd, F_GETFL, 0);
fcntl(fd, F_SETFL, flags | O_NONBLOCK);
今、あなたが読み取りまたは書き込み操作ができないときは、非ブロックモードを使用する必要が
パイプの仕組み。書き込み時にパイプがいっぱいになると、データがパイプから "削除"されるまで、 'write'がブロックされます。 –
ノンブロッキングを開き、 'write'の結果をテストします。 – Olaf