我想在它自己的进程组中启动一个进程(或者,一旦启动就改变它的组)并且:
- 让组中的进程从终端响应
Ctrl+C - 获取进程组的 id,以便我可以通过
kill命令终止组中的所有进程。
注意:我尝试过setsid prog [args],但进程没有从终端响应 Ctrl+C,也无法获得新的进程组 ID。
我还尝试通过 Perl 的setpgrp($pid, $pid)and更改进程组POSIX::setpgid($pid, $pid),但无济于事。
编辑:更大的问题:
我有一个进程(单线程;我们称其为“多产”进程P),它同步启动许多子进程(一个接一个;当前一个子进程终止时,它会启动一个新进程)。从终端,我希望能够杀死P它下面的进程树。为此,我可以简单地安排杀死P's 组中的进程。但是,默认行为是P在其父进程的组中。这意味着P如果我杀死P' 组中的所有进程,则 ' 的父级将被杀死,除非我有P并且它的树在他们自己的组中。
我的意图是杀死P它下面的树,而不是P' 的父母。另外,我不能修改P's 代码本身。