我有一个perl脚本,使用pipe执行另一个脚本:
$pid = open (OUTPUT, "my_script.pl 2>&1 |") || "";
if ($pid) {
while (<OUTPUT>) {
print;
}
close (OUTPUT);
}
my_script.pl
分叉另一个孩子的过程。当我第一次杀死my_script.pl
然后杀死它的子进程(我手动杀死进程kill -9
)时,my_script.pl
进程就会失效并且管道挂起。知道如何解决这个问题吗?
我不想先销毁子进程。
发布于 2018-12-20 15:41:46
当一个程序退出时,它会变成一个zombie(不存在的进程),直到它的父进程(通过调用wait
)。[1]如果该过程完全消失,程序将无法获得子进程的退出代码。这完全正常,而不是问题。
Orphans(包括zombie Orphans)被进程1采用,当他们完成时立即收回他们的子。
https://stackoverflow.com/questions/-100006343
复制相似问题