Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/silverlight/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Perl 普拉库普和斯塔曼手下的舞者;分叉叶已失效的starman进程?_Perl_Perl Module_Fork_Dancer_Plack - Fatal编程技术网

Perl 普拉库普和斯塔曼手下的舞者;分叉叶已失效的starman进程?

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 }

作为我在这里提出的另一个问题的后续问题:-我如何在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 worker被回收,但剩余的plackup过程失效


在perlipc中,我也尝试过设置
$SIG{CHLD}=“IGNORE”
,但没有效果。

分叉时,父进程不会退出,而是等待子pid。 如果我回忆起
fork
正在设置一个返回值或一个带有子对象pid的特殊变量;所以你需要抓住这个。然后注册一个类似等待的
$SIG{INT}
处理程序


您可能正在考虑使用。

是的。如果某个进程的父进程不等待该进程退出,则该进程将成为失效/僵尸,init(pid 1)将采用该进程,但在重新启动之前,该进程不会从进程表中清除。