perl管道悬挂,过程变得不合格



我有一个perl脚本,该脚本使用管道执行另一个脚本:

$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过程变为已删除,管道悬挂。知道如何解决这个问题吗?

我不想先杀死孩子的过程。

当程序退出时,它将变成僵尸(已删除的过程),直到其父收益为止(通过调用wait)。 [1] 如果该过程完全消失了,程序将无法获得儿童流程的退出代码。这是完全正常的,而不是问题。

  1. 孤儿(包括僵尸孤儿)被过程1采用,这立即在孩子完成时收获。

最新更新