3

K&PによるUnixプログラミング環境では、
「パイプライン内のプログラムは、実際には次々ではなく同時に実行されます。
これは、パイプライン内のプログラムが対話可能であることを意味します 。」と書かれています。

プログラムを同時に実行するにはどうすればよいですか?
例:$ who | grep mary | wc -l
誰が実行されるまでgrepmaryがどのように実行されるか、または以前のプログラムの結果がわかるまでwc -lがどのように実行されるか?

4

1 に答える 1

7
  • 3つのプログラムすべてが開始されます。grepとwcはstdinを介した入力を待ちます
  • whoデータの行を出力し、それgrepが受信します
  • 行が一致する場合、grepはそれをに書き込み、stdout次にwc読み取りとカウントを行います
  • その間、などwhoのためにもっと多くのデータを書き出していたかもしれませんgrep

各プログラムには前のプログラムの結果が必要ですが、動作を開始する前にすべての結果が必要なわけではないため、パイプライン化が可能です。

于 2010-04-15T09:36:45.690 に答える