首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >waitid是否使用SIGCHLD?

waitid是否使用SIGCHLD?
EN

Stack Overflow用户
提问于 2014-06-07 07:42:56
回答 2查看 326关注 0票数 2

waitid/waitpid是否使用任何挂起的SIGCHLD

例如,如果一个线程调用waitid,而另一个线程调用sigwaitinfo或从signalfd读取数据,我能假设当子进程终止时,这两个调用都返回正确的数据吗?

EN

回答 2

Stack Overflow用户

发布于 2014-06-08 12:53:17

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

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

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

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

票数 2
EN

Stack Overflow用户

发布于 2014-06-07 20:17:43

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24092141

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档