広告
広告
システムコール fork を行なう関数です。親プロセスにはチャイルドプロセスの pid を、チャイルドプロセスに 0 を返しますが、fork に失敗したときには未定義値を返します。フラッシュされていないバッファはどちらのプロセスに対してもフラッシュされていないままとなっています。これは、出力が重なるのを避けるためには、$| (English では $AUTOFLUSH) を設定するかファイルハンドルメソッド autoflush() を呼ぶ必要があります。チャイルドプロセスの終了を待たずに、fork() を繰り返せば、ゾンビをため込むこととなります。
unless ($pid = fork) {
unless (fork) {
exec "what you really wanna do";
die "no exec";
# ... または ...
some_perl_code_here;
exit 0;
}
exit 0;
}
waitpid($pid,0);
広告