KDOC 284: パイプで結合したプロセスが終了する流れ

この文書のステータス

  • 作成
    • 2024-11-10 貴島
  • レビュー
    • 2024-11-14 貴島

概要

cat /dev/random | head

20241109-rw.drawio.svg

  1. cat と head が非同期で実行開始する
  2. catがパイプのバッファにランダムなバイト列を書き込む
  3. headがパイプのバッファに書き込まれた内容を読み取る。入力のうち先頭10行を読み込み、実行終了する
  4. head終了に伴って読み込み側のファイルディスクリプタがクローズされる
  5. catはまだ動いている
  6. catがパイプバッファへ書き込みしようとすると、読み込み側のファイルディスクリプタがクローズされているので書き込みがブロックされる。OSからcatのプロセスにSIGPIPEが送られる
  7. catプロセスはSIGPIPEによって終了させられる。終了コード141を返す。SIGPIPEによって終了したことを示すコード

関連