我有以下一组进程,它们需要由第一个列出的进程以编程方式关闭,这是我正在编写的C程序。
PID PGRP SESN PPID USER TTY CMD
6553 6553 6553 1 root ? ./startserv
6554 6553 6553 6553 root ? expect -- /usr/bin/unbuffer ./srcds_run...
6555 6555 6555 6554 root pts/1 /bin/sh ./srcds_run -autoupdate -game c...
6565 6555 6555 6555 root pts/1 ./srcds_linux -autoupdate -game cstrike...
在这种情况下我通常用手杀死65536555。显然,我知道自己的PID,但是编写“kill my PID+2”之类的代码似乎有点傻(尽管看起来这几乎总是可行的)。帮忙?
最佳答案
这些答案都不是很正确-处理这个问题的最简单方法是通过getpgrp/setpgrp将进程放入进程组(子进程继承父进程组,因此您的封闭源代码二进制文件也应该很好),然后通过killpg一举将它们全部杀死,这就保证了他们所有人都能同时收到信号,而没有任何种族条件会让孩子在正确的时间分岔逃跑。
关于c - 关闭这组流程的最佳方法是什么?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3728151/