如何从子进程向所有进程发送信号?

时间:2013-05-19 14:20:37

标签: c++ c sockets fork

我正在尝试使用fork()调用来执行套接字编程示例,我的问题是:当子进程完成一个作业时,我想要杀死所有其他进程。我想如果我向其他人发送信号......这是可能的,还是有人告诉我一个方法?

3 个答案:

答案 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);

您可以向所有孩子发送信号。