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

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

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

作成日: 更新日:

基本的な使い方

waitpid関数は、親プロセスが特定の子プロセスの終了を待機し、その終了ステータスを回収するために使用される関数です。システムプログラミングにおいて、親プロセスが子プロセスを生成した後、子プロセスが終了した際に発生する「ゾンビプロセス」を防ぐ上で非常に重要な役割を果たします。ゾンビプロセスとは、子プロセスが終了したにもかかわらず、親プロセスがその終了ステータスを回収しないために、システムリソースを消費し続ける状態のプロセスのことです。

この関数を呼び出すと、通常は指定された子プロセスが終了するまで親プロセスの実行は一時的に停止(ブロック)します。これにより、親プロセスは子プロセスの完了を確実に同期的に確認することができます。引数としては、待機対象の子プロセスのプロセスID(PID)を渡すことが一般的です。また、待機を非同期で行う、つまり子プロセスが終了していなくても親プロセスをブロックせずに処理を継続させるためのオプションフラグを指定できる場合もあります。

waitpid関数は、正常に待機が完了すると、終了した子プロセスのPIDを戻り値として返します。もしエラーが発生した場合や、非同期モードで子プロセスがまだ終了していない場合は、特定の戻り値でその状況を示します。多数の子プロセスを扱うアプリケーションや、バックグラウンドでのタスク実行を管理するシステムにおいて、リソースの適切な管理とプロセスの健全なライフサイクルを維持するために不可欠な機能です。

構文(syntax)

1Process.waitpid(pid, flags = 0)

引数(parameters)

pid = -1, flags = 0

  • pid = -1: 待機する子プロセスのプロセスIDを指定します。デフォルト値の-1は、いずれかの子プロセスを指定します。
  • flags = 0: 動作のオプションを指定する整数です。

戻り値(return)

Integer

waitpid メソッドは、指定された子プロセスの終了ステータスを整数で返します。この整数は、プロセスが正常に終了したか、シグナルによって終了したかなどの情報を含んでいます。

関連コンテンツ

関連プログラミング言語