【发布时间】:2026-02-21 20:50:01
【问题描述】:
我想通过向其中的进程发送SIGTERM 来终止进程组。这可以通过kill 命令来完成,但我发现的手册中几乎没有提供关于它是如何工作的详细信息:
int kill(pid_t pid, int sig);
...
If pid is less than -1, then sig is sent to every process in
the process group whose ID is -pid.
但是,信号将按什么顺序发送到组成组的进程?想象一下以下情况:在组中的主从进程之间设置了一个管道。如果在处理kill(-pid) 期间从机被杀死,而主机仍然没有,主机可能会将其报告为内部故障(在收到子机已死亡的通知后)。但是,我希望所有进程都明白这种终止是由它们的进程组外部的东西引起的。
如何避免这种混淆?我应该做的不仅仅是kill(-pid,SIGTERM)吗?或者它是由我不知道的操作系统的底层属性解决的?
注意我不能修改组内进程的代码!
【问题讨论】: