fork についてのメモ

10年ぶりですっかり忘れてるわけで。。。

http://www.stackasterisk.jp/tech/program/perl04_02.jsp

fireproject.jp - このウェブサイトは販売用です! -  リソースおよび情報
fork の挙動を染み込ませるために、上記サイトのソースを自分でも実行させる。


すべての子プロセスが終わるまで待って親プロセスを終了。

$NUM_CHILDREN = 20;
for (my $i = 0; $i < $NUM_CHILDREN; $i++) {
    if (my $pid = fork) {
        push @children, $pid;
    } else {
        sleep(5);
        print "child\n";
        exit 0;
    }
}

for (my $i = 0; $i < $NUM_CHILDREN; $i++) {
    until (waitpid(-1, 0) > 0) {
    }
}
print "parent\n";

Perlのexec関数は、外部プログラムを
呼び出した後、呼び出し元の処理を実行しません。


exec関数で外部プログラムを実行したら、
プログラム自体がexec関数で呼び出された
プログラムにごっそり入れ替わってしまいます。

Loading...