3

当一个进程子进程终止时,他正在向SIGCHLD 父进程发送一个。现在,如果父进程有多个子进程,父进程如何知道哪个子进程发送了信号?

4

2 回答 2

2

系统wait()调用返回pid终止的孩子的。您可以调用wait()您的SIGCHLD处理程序来确定哪个孩子终止了。

手册页

       wait(): on success, returns the process ID of the terminated child;
   on error, -1 is returned.
于 2013-11-06T13:26:10.887 回答
1

除了@shanet's answerwait()中的调用系列之外,SIGCHLD 本身还携带该信息。

传递给三参数信号处理程序 ( SA_SIGINFO )的si_pid成员的成员包含孩子的 PID。siginfo_t

于 2013-11-06T13:30:30.500 回答