en ja en en en en en ja ja en ja en ja eo ja en en
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, # ]