wait

子プロセスの終了を待つ

構文

解説

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 を使ってください。