1

假设我们的进程创建了一个子进程,然后调用wait().

当我尝试发送信号()或做

kill -SIGCHLD <PID> 

什么都没有发生。

所以问题是:Linux 中的进程如何确定信号SIGCHLD不是由孩子发送的?或者,也许还有其他机制?

4

1 回答 1

0

内核负责这个。

wait()不是监听(任何)发送到进程的信号处理程序SIGCHLD,因为它可能通过sigaction()or建立signal()

来自wait()的 POSIX 规范(我强调):

wait() 和 waitpid() 函数应获取与调用者的子进程之一有关的状态信息。

于 2013-12-29T10:38:15.273 回答