5部 関数リファレンス

fork

2011年9月20日
fork

子プロセスを作り出します。親プロセスには、チャイルドプロセスのpidを、チャイルドプロセスに 0 を返しますが、forkに失敗したときには、未定義値を返します。

フラッシュされていないバッファは、どちらのプロセスに対しても、フラッシュされていないままとなっています。これは、出力がダブルのを避けるためには、$|を設定するか、IO::Handleモジュールのファイルハンドルメソッドautoflushを呼ぶ必要があるかもしれないということです。

チャイルドプロセスの終了を待たずに、forkを繰り返せば、ゾンビをため込むことになります。

$SIG{'CHLD'} = sub { wait };

プロセスについては用語集「プロセス」を参照してください。

ダブルfork

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); 

Comment

コメントを残す

メールアドレスが公開されることはありません。

リズムファクトリーはホームページの制作会社です。
ホームページ制作に関するご要望・ご相談はこちらからどうぞ。