[Perl] 指定した個数のプロセスを fork する

Posted by
ぴろり
Posted at
2010/02/16 15:50
Trackbacks
関連記事 (0)
Post Comment
コメントできます
Category
開発メモ カテゴリ

 Perl では fork 関数を使って子プロセスを生成することができます。複数のプロセスを fork したい場合のソースコードのメモ。

このエントリーをはてなブックマークに追加  

#!/usr/bin/perl

sub forked_process {
    print "I'm a child. My pid is $$
";
    sleep 5;
}

my $num_fork = 5;

while ($num_fork--) { # $num_fork で指定された回数だけループ
    my $pid = fork; # 子プロセスを生成する
    if (!defined $pid) {
        die "fork failed"; # 生成に失敗した
    }
    elsif (!$pid) {
        &forked_process; # 子プロセスの本体(関数)
        print "$$ exit
";
        exit; # 子プロセスを終了する
    }
    # 親プロセスなのでループを継続する
}

 while で必要な回数だけ回して、ループ内部で fork します。親プロセスの場合だけループを継続して、子プロセスの場合はそのまま exit しないと無限ループになるので注意。

 (2010/02/18追記) あと、子プロセスについては wait せずに投げっぱなしバックドロップ(?)なのも注意してください。この辺りは調べれば調べるほど奥が深そう。

このエントリーをはてなブックマークに追加  



関連記事/トラックバック

関連記事/トラックバックはまだありません

この記事にトラックバックを送るには?

コメントを投稿する

 
 (必須, 匿名可, 公開, トリップが使えます)
 (必須, 匿名可, 非公開, Gravatar に対応しています)
 (必須)
スパム コメント防止のため「投稿確認」欄に ランダムな数字 CAPTCHAについて を入力してから送信してください。お手数ですがご協力のほど宜しくお願いいたします。