我有一个perl脚本,其中有几个递归分叉的实例。有什么好办法可以把整棵树从叉过的孩子身上杀掉?无需清洁,kill -9即可。

最佳答案

当shell启动进程时,它使其成为进程组的开始。

$ perl -MPOSIX -E'
   my $pid = fork();
   say getpgrp(), " ", getpid();
   waitpid($pid, 0) if $pid;
'
6164 6164
6164 6167

如果没有任何子进程组发生更改,则可以向进程组发送信号。例如,下面将把SIGTERM发送到与process1234位于同一进程组中的所有进程:
kill -s TERM -1234

如果某些子进程组已更改,则需要抛出可捕获的信号(例如notSIGKILL),并且具有已更改进程组的子进程的父进程将需要显式捕获并重新向这些子进程发送该信号。

关于linux - Perl:杀死任何 child 的整棵树,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33832930/

10-15 13:57