1

ここで私の他の質問へのフォローアップとして: Forking to Run Code in a Child Process With Perl's Dancer - 子をゾンビ状態のままにすることなく、plackup/starman/dancer の下で実行されているリクエストをフォークするにはどうすればよいですか?

私がやろうとしていることの例:

post '/handle_data' => sub {

# perform some calculations
...
# store some data
...
fork and return; # parent request
# do some long running tasks
...
exit; # child

};

... スターマン ワーカーはリサイクルされますが、残ったプラッキング プロセスは機能しなくなります。

perlipc から、私も設定を試みまし$SIG{CHLD} = "IGNORE"たが、役に立ちませんでした。

4

1 に答える 1

2

フォークすると、親プロセスは終了せず、子 pid を待ちます。私が思い出すforkと、戻り値または子の pid を持つ特別な変数を設定しています。だからあなたはそれを捕まえる必要があります。ああ、$SIG{INT}同様に待機するハンドラーを登録します。

おそらくwaitpidの使用を検討しているでしょう。

于 2012-12-14T03:48:06.997 に答える