不完全な読み取りアクセス後も名前付きパイプにデータを保持する

不完全な読み取りアクセス後も名前付きパイプにデータを保持する

前提条件:

$ mkfifo pipe1

数行を入力するとパイプ1

$ (echo line 1; echo line 2) > pipe1

すべての行は他の端末で読むことができます

$ cat pipe1
line 1
line 2

今まではそんなに良くなった。

しかし、

後者の代わりにいくつかの部分を読み取った。

$ head -n 1 pipe1; head -n 1 pipe1
line 1

その後、データの最初の行のみがパイプラインにリンクされます。パイプ1復帰(最初からヘッダー -n 1)残りのデータは失われたように見え、2番目の読み取りアクセスが中断され(新しい)データが利用可能になるのを待ちます。パイプ1

どのように

複数の連続した部分読み取りを可能にする名前付きパイプとパイプの内容を設定しますか?

つまり、これを取得する方法は次のとおりです。

$ head -n 1 pipe1; head -n 1 pipe1
line 1
line 2

関連情報