子プロセスを生成して外部コマンドを実行する
子プロセスを生成して外部コマンドを実行するにはfork
とexec
を使用する。
fork
はシステムコールを使ってプロセスの複製を作り、ブロックを指定して呼び出した場合は生成した子プロセスでブロックを評価する。exec
は現在のプロセスを与えられた外部コマンドで置き換える。
プロセスの終了を待ってプロセスIDと終了ステータスコードを得るにはwaitpid2
を使用する。waitpid2
は特定の子プロセスの終了を待ち、プロセスが終了したらPIDと終了ステータスコードの配列を返す。
以下は子プロセスで3秒間のスリープを実行して、その終了を待つ例である。
pid = fork do exec('sleep 3') end exitpid, status = *Process.waitpid2(pid)