假设我们的进程创建了一个子进程,然后调用wait()
.
当我尝试发送信号()或做
kill -SIGCHLD <PID>
什么都没有发生。
所以问题是:Linux 中的进程如何确定信号SIGCHLD
不是由孩子发送的?或者,也许还有其他机制?
假设我们的进程创建了一个子进程,然后调用wait()
.
当我尝试发送信号()或做
kill -SIGCHLD <PID>
什么都没有发生。
所以问题是:Linux 中的进程如何确定信号SIGCHLD
不是由孩子发送的?或者,也许还有其他机制?
内核负责这个。
wait()
不是监听(任何)发送到进程的信号处理程序SIGCHLD
,因为它可能通过sigaction()
or建立signal()
。
来自wait()
的 POSIX 规范(我强调):
wait() 和 waitpid() 函数应获取与调用者的子进程之一有关的状态信息。