子プロセスの終了を待つ
wait
は、fork
で生成した子プロセスの終了を待ちます。
待っている間は親プロセスの処理をブロックします。
wait
は終了した子プロセスの pid を返します。
もし子プロセスが存在しなければ -1 を返します。
また、終了した子プロセスの終了ステータスは $?
から得ることができます。
# 子プロセスをフォークする
my $pid = fork();
# 子プロセスのコード
unless ($pid) {
sleep 5;
exit 0;
}
# 親プロセス側で子プロセスの終了を待つ
my $finished_pid = wait;
print "子プロセスの終了を検知しました: pid=${finished_pid}\n";
もし親プロセスが複数の子プロセスを生成した場合、
うち 1 つでも終了すると wait
は返ってしまいます。
もしすべての子プロセスの終了を監視したい場合は、
waitpid
を使ってください。