writer が長いメッセージを 1 回だけ書き込み、reader が読み込んで出力する例。
ビルド
cmake -S . -B build
cmake --build build
実行
読み込み側を起動
build/reader.out
書き込み側を起動(↑ のシェルとは別のシェルで起動する)
build/wrter.out
writer 側のopen
は、読み込み側が開くまでブロックされる。
上の実行例で、reader と writer の起動順序を入れ替えると、writer は reader が起動するまで open のところで止まったままとなる。
EOF という文字はない。したがって、明示的に writer がファイルの終端という情報を送ることはできない。
reader 側が持っている FIFO の書き込み側がすべてクローズされると、read
が 0 を返す。
これをもって、ファイルの終端とみなすことが普通。参考