Ruby 2.3.0 リファレンスマニュアル > ライブラリ一覧 > 組み込みライブラリ > Processモジュール > wait

module function Process.#wait

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

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

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

[PARAM] pid:
子プロセスのプロセス ID を整数で指定します。 0 以上なら指定されたプロセス ID の子プロセスを待ちます。 0 なら呼び出し元のプロセスとプロセスグループ ID が同じ任意の子プロセスを待ちます。 -1 (省略時のデフォルト) は任意の子プロセスを待ちます。 -1 未満なら pid の絶対値とプロセスグループ ID が同じ任意の子プロセスを待ちます。
[PARAM] flags:
Process モジュールの定数 Process::WNOHANG(ノンブロッキングモード)と Process::WUNTRACED の論理和を指定します。省略したときの値は 0 です。ノンブロッキングモードで子プロセスがまだ終了していない時には nil を返します。waitpid(2)wait4(2) の実装されていないマシンでは flags はいつも nil または 0 を指定する必要があります。
[EXCEPTION] Errno::ECHILD:
子プロセスが存在しない場合に発生します。

pid = fork { sleep 1 }
Process.wait2 # => [70024, #<Process::Status: pid 70024 exit 0>]

[SEE_ALSO] wait(2), waitpid(2)