Ruby 4.0 リファレンスマニュアル

module function Process?.wait2

wait2(pid = -1, flags = 0) -> [Integer, Process::Status] | nil[permalink][rdoc][edit]
waitpid2(pid = -1, flags = 0) -> [Integer, Process::Status] | nil
(?Integer pid, ?Integer flags) → [ Integer, Process::Status ]

pid で指定される特定の子プロセスの終了を待ち、そのプロセスが終了した時に子プロセスの pid と終了ステータスを表す Process::Status オブジェクトの配列を返します。ノンブロッキングモードで子プロセスがまだ終了していない時には nil を返します。

$? に終了した子プロセスの Process::Status オブジェクトがセットされます。

[PARAM] pid:
Process?.wait の pid と同じです。
[PARAM] flags:
Process?.wait の flags と同じです。
[EXCEPTION] Errno::ECHILD:
子プロセスが存在しない場合に発生します。
pid = fork { sleep 1 }
p Process.wait2 # => [70024, #<Process::Status: pid 70024 exit 0>]

[SEE_ALSO] Process?.wait, wait(2), waitpid(2)