私はLinux上にあり、当初はfifoファイルの場合、ライターがその中にいくつかのコンテンツをダンプすると、そのライターはそのコンテンツを "すべて"読み込んで返してくれるのを待っています。しかし、私は期待通りではないようだ、私は簡単な実験だった:私は "いくつかのラインを有する、「my.txt」ファイルを持っていたその後linux fifo、readピアが返ってくると、write peerもすぐに戻りますか?
$mkfifo hfifo.txt
:すべての
まず、私は、FIFOファイルを作成しました:
$cat my.txt
line1
line2
line3
line4
私はmy.txtとhfifo.txtへの書き込みに "TTY1" を開きます。
cat my.txt >hfifo.txt
私が読むために、他の端末 "tty2" を開きますそれからe線:仕上げを「読み取り」として私suppriseによく
$read l1<hfifo.txt
、私の「TTY1」の「猫」もすぐに戻ります。私は "$ l1をエコーする" "line1"を印刷します。私は、読者ピアがFIFOに書かれているすべてのコンテンツを読んで、ライターピア(tty1)が戻ってくることを期待していたので、これは私にとって非常に奇妙です。しかし、実際の結果は、リーダ・ピアが終了すると、ライタ・ピアも終了します。
は、私はちょうど好奇心
(1)どのようにライターピアは、それが終了したので、FIFOを読むためにこれ以上の読者がないことを知っていますか?私はこのファイルの各行を印刷するために "read"コマンドを呼び出すループに入るかもしれません。
(2)fifoをダンプするリーダーとしての "cat"コマンドの横に、このFIFOを1行読み込む方法がありますか?
感謝を申し出てください。