C で 2 つのプログラムを作成しました。プログラム A は FIFO への出力を生成し、プログラム B は FIFO からの出力を読み取り、それに応じて処理することを決定します。プログラム A では、stdout を FIFO にリダイレクトして、すべての printf メソッドが出力を FIFO にスローするようにしました。
プログラム B では、FIFO を (読み取りモードで) 開き、プロセス A の出力を fgets() で 1 行ずつ読み取り始めます。ここで問題が発生します。これは、期待した動作が得られないためです。
プロセスAがFIFOに行を出力するとすぐに、プロセスBはそれを即座に取得する必要があると予想していましたが(プロセスAで起こっていることのライブ更新のように)、FIFOのコンテンツがプロセスBで読み取られるまではプロセスAはFIFO接続を閉じます。そのため、プロセスAが何かをFIFOに出力するとすぐにデータを取得するのではなく、大量にデータを取得します。
FIFO のデフォルトの動作 (つまり、書き込み終了時に接続が閉じられたときにデータが一括で読み取られる) であるかどうかを知りたいですか?
現時点でコードがあればいいのですが、自宅のコンピューターから投稿しています。
どんな助けでも大歓迎です。