Perl 普拉库普和斯塔曼手下的舞者;分叉叶已失效的starman进程?
作为我在这里提出的另一个问题的后续问题:-我如何在plackup/starman/dancer下执行请求,而不导致孩子处于僵尸状态 例如,我正在尝试做的事情:Perl 普拉库普和斯塔曼手下的舞者;分叉叶已失效的starman进程?,perl,perl-module,fork,dancer,plack,Perl,Perl Module,Fork,Dancer,Plack,作为我在这里提出的另一个问题的后续问题:-我如何在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 }
post '/handle_data' => sub {
# perform some calculations
...
# store some data
...
fork and return; # parent request
# do some long running tasks
...
exit; # child
})
。。。导致starman worker被回收,但剩余的plackup过程失效
在perlipc中,我也尝试过设置
$SIG{CHLD}=“IGNORE”
,但没有效果。分叉时,父进程不会退出,而是等待子pid。
如果我回忆起fork
正在设置一个返回值或一个带有子对象pid的特殊变量;所以你需要抓住这个。然后注册一个类似等待的$SIG{INT}
处理程序
您可能正在考虑使用。是的。如果某个进程的父进程不等待该进程退出,则该进程将成为失效/僵尸,init(pid 1)将采用该进程,但在重新启动之前,该进程不会从进程表中清除。