1

作为我在此处的另一个问题的后续行动:使用 Perl 的 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

};

... 导致 starman 工人被回收,但剩余的 plakup 过程失效。

从 perlipc,我也尝试过设置$SIG{CHLD} = "IGNORE",但无济于事。

4

1 回答 1

2

分叉时,父进程不会退出,而是等待子 pid。如果我记得fork是使用孩子的 pid 设置返回值或特殊变量;所以你需要抓住它。哦,注册一个$SIG{INT}同样等待的处理程序。

您可能正在寻找使用waitpid

于 2012-12-14T03:48:06.997 回答