【Ruby3.x】waitpid2()関数の使い方
waitpid2関数の使い方について、初心者にもわかりやすく解説します。
作成日: 更新日:
基本的な使い方
waitpid2関数は、Rubyプログラムが起動した子プロセスの終了を待機し、その終了に関する詳細な情報を取得する関数です。この関数は、引数として待機する子プロセスのID(PID)を受け取ります。特定のPIDを指定した場合、その子プロセスが終了するまで親プロセスは実行を一時停止(ブロック)し、待機します。PIDに-1を指定すると、任意の子プロセスの終了を待機します。子プロセスが終了すると、waitpid2関数は、終了した子プロセスのPIDと、その終了状態を表すProcess::Statusオブジェクトの配列を戻り値として返します。Process::Statusオブジェクトからは、子プロセスが正常に終了したか、シグナルによって終了したか、そして終了コードが何だったか、といった詳細な情報を確認することができます。これにより、外部コマンドの実行結果を正確に判断したり、複数の子プロセスの状態を監視したりする場面で非常に役立ちます。例えば、シェルコマンドを実行し、そのコマンドが成功したかどうかをRubyプログラムで確認する際などに利用されます。waitpid2は、waitpid関数と比べて、より詳細な終了ステータス情報を提供するため、子プロセスの管理において柔軟な制御が必要な場合に適しています。
構文(syntax)
1Process.wait2(pid = -1, flags = 0) -> [Integer, Process::Status]
引数(parameters)
pid = nil, flags = 0
- pid = nil: 待機する子プロセスのプロセスID。nilを指定すると、任意の終了した子プロセスを待ちます。
- flags = 0: 待機動作を制御するフラグ。
戻り値(return)
[Integer, Process::Status]
waitpid2 メソッドは、終了した子プロセスのプロセスIDと、そのプロセスの終了ステータスを格納した Process::Status オブジェクトの配列を返します。