我正在尝试使用fork()调用来执行套接字编程示例,我的问题是:当子进程完成一个作业时,我想要杀死所有其他进程。我想如果我向其他人发送信号......这是可能的,还是有人告诉我一个方法?
答案 0 :(得分:3)
在partent开始时(在它的子女分叉之前),请致电setpgid(0,0)
。这将使进程组ID与父进程的PID相同。此PGID将由每个子项继承,并且任何进程都可以通过调用kill(signal, -getpgid(0))
向组中的所有进程发送信号。
答案 1 :(得分:1)
杀死进程组的常用方法是使用killpg()系统调用。从手册页:
“killpg()将信号sig发送到进程组pgrp。”
除了killpg()之外,还可能需要使用get / setpgid来正确设置组。
答案 2 :(得分:0)
您可以使用:
killpg( 0, SIGNALTYPE);
您可以向所有孩子发送信号。