マルチプロセッシング
1 つの CPU を複数のプロセスが共有することも示すが、1 つのシステム内で複数の CPU が複数 スレッド を動作させる(マルチプロセッサ)ことも意味する curl -s https://www.rfc-editor.org/rfc/rfc1122.txt | wc の実行
実行すると、コマンドラインは 2 つの並行プロセスを fork する code:sh
$ ps -a
PID TTY TIME CMD
52146 ttys000 0:00.00 curl
52147 ttys000 0:00.00 wc
1 つ目のプロセス(PID = 52146)では curl を実行し、URL からテキストファイルをダウンロードする
2 つ目のプロセスでは wc を実行する
| を使うと、バッファ を割り当てて、curl の出力と wc の入力をそのバッファに リダイレクト するように OS に指示できる curl プロセスはバッファがいっぱいになると待機し、wc プロセスがバッファを消費すると再開する
逆に wc プロセスはバッファが空になると待機し、curl プロセスがバッファに出力するまで待機する
curl プロセスはすべてのテキストを読み取ったら終了し、これ以上データが無いことを示すマーカをパイプに置く
このマーカは wc に対して、これ以上データは来ないので終了しても良いという通知として機能する