2

Unix(またはWindows)で(できれば名前のない)パイプを使用して、1つのプロセスの標準出力を複数のプロセスに送信するにはどうすればよいですかgrep奇妙な問題に気づいたとき、いじっていました。以下は期待どおりに機能します。

$ while [ 1 ]; do sleep 1 ; echo tick; done | tee >(grep -o ti) >(grep -o ic) >(grep tick) >/dev/null
ic
ti
tick
ic
tick
ti
^C

3 つのコマンドはすべてgrep、ループの出力に適用されます。

ただし、出力をtee(/dev/null にリダイレクトするのではなく) grepにパイプするgrepと、ファイルの s が機能しなくなります。

$ while [ 1 ]; do sleep 1 ; echo tick; done | tee >(grep -o ti) >(grep -o ic) | grep tick
tick
tick
^C

なぜこれが起こるのですか?

4

1 に答える 1