web-dev-qa-db-ja.com

`tail -f`に接続された2つの名前付きパイプ(PIPE_in / PIPE_out)| PIPE_inに送信された文字列がPIPE_outに到達しません

1.次のコマンドを実行して、名前付きパイプpipe_inおよびpipe_outを作成します。

$ mkfifo pipe_in
$ mkfifo pipe_out

2. pipe_inpipe_outに接続します。

TERM0: $ tail -f pipe_in > pipe_out

3.文字列hello world!pipe_inに送信し、pipe_outに到着することを期待します。

TERM1: $ tail -f pipe_out
TERM2: $ echo "hello world!" > pipe_in

pipe_outでコマンドを強制終了した場合にのみ、2.に到達する文字列を確認できます。バッファリングの問題のようですので、上記のすべてのコマンドをstdbuf -i0 -e0 -o0 <command>で実行することにしましたが、機能しませんでした。

1
fmagno

tailは、ファイル/ストリームの最後のn行のみを出力します。 まだ行を生成している間、最後のnがどれであるかを知ることはできません。

catのようなものを試しましたか?

2
ctrl-alt-delor

動作しない理由については、@ ctrl-alt-delorの回答を参照してください。ただし、catを使用しても同じ目的を達成できます。

enter image description here

0
gmagno