Webエンジニア向けプログラミング解説動画をYouTubeで配信中!
▶ チャンネル登録はこちら

【Ruby3.x】waitall()関数の使い方

waitall関数の使い方について、初心者にもわかりやすく解説します。

作成日: 更新日:

基本的な使い方

waitall関数は、複数の子プロセスの終了をまとめて待機し、その結果を取得する関数です。

この関数はRubyのProcessモジュールに属しており、Process.waitallとして利用されます。Rubyプログラムがforkメソッドで新しい子プロセスを生成したり、systemやspawnなどのメソッドで外部コマンドを実行して子プロセスを起動したりした場合、親プロセスはこれらの子プロセスの終了を適切に処理する必要があります。waitall関数は、現在実行中のすべての子プロセスが終了するまで、親プロセスの実行を一時停止し、それらの終了を待ちます。

待機が完了すると、この関数は、終了したすべての子プロセスのプロセスID(PID)と、その終了ステータスを表すProcess::Statusオブジェクトのペアを、配列の配列として返します。例えば、[[pid1, status1], [pid2, status2], ...]のような形式です。これにより、どのプロセスがどのような状態で終了したかを詳細に把握できます。waitallを使用することで、子プロセスが終了しても親プロセスがその終了を認識せず、リソースを占有し続ける「ゾンビプロセス」の発生を防ぎ、システムリソースを適切に管理できます。特に、複数の子プロセスを並行して起動し、それらすべての完了を待ってから次の処理に進むようなシナリオで非常に有用です。プロセス管理の基本として、この関数の役割と使い方を理解することは、堅牢なRubyアプリケーションを開発する上で重要なステップとなります。

構文(syntax)

1Process.waitall

引数(parameters)

引数なし

引数はありません

戻り値(return)

Array<Array<Integer, Process::Status>>

引数として与えられた全てのプロセスが終了するまで待機し、各プロセスの終了ステータスとプロセスIDのペアを要素とする配列の配列を返します。

関連コンテンツ

関連プログラミング言語