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

How to send a signal to all process from child process?

本文关键字:进程 信号 子进程      更新时间:2023-10-16

我正在尝试使用fork()调用做一个套接字编程示例,我的问题是:当子进程完成工作时,我想杀死所有其他进程。我想如果我给别人一个信号…这是可能的还是有人告诉我一个方法?

在父进程的开始(在它派生其子进程之前),调用setpgid(0,0)。这将使进程组ID与父进程的PID相同。这个PGID将被每个子进程继承,任何进程都可以通过调用kill(signal, -getpgid(0))向组中的所有进程发送信号。

杀死进程组的常用方法是使用killpg()系统调用。从手册页:

"killpg()向进程组pgrp发送信号。"

除了killpg()之外,可能还需要get/setpgid来正确设置组

你可以这样做:

killpg( 0, SIGNALTYPE);