繁体   English   中英

waitid是否消耗SIGCHLD?

[英]Does waitid consume SIGCHLD?

waitid / waitpid是否会消耗任何待处理的SIGCHLD? 例如,一个线程调用waitid,而另一个线程调用sigwaitinfo或从signalfd读取,我可以假定子进程终止时两个调用都返回正确的数据吗?

找到https://lkml.org/lkml/2009/1/10/181

该通知仅告诉我们至少一个进程已经死亡; SIGCHLD一次只能待处理一次。 如果在我们清除信号之前有更多的孩子死亡,将不会发生任何事情。 ...因为它只告诉我们至少有一个进程已经死亡,所以我们必须反复调用waitpid(),直到耗尽了等待队列。

~~调用waitpid()不会清除挂起的信号。~~

pageanpages没有提到“等待队列”,但是它解释了一些事情。

我不会那样做。 问题是您不知道信号在哪个线程中传递(第一个)。 另一方面, sigwaitinfo()从挂起的信号集中删除信号。 因此,调用waitpid()的线程可能永远不会返回。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM