首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用sigaction捕获SIGCHLD

用sigaction捕获SIGCHLD
EN

Stack Overflow用户
提问于 2017-10-23 22:33:36
回答 1查看 558关注 0票数 0

我正在读一篇关于信号的文章,代码的这一部分,我不知道它在做什么。有人能给我解释一下吗?本文是关于创建TCP未阻塞服务器的。

代码语言:javascript
复制
struct sigaction sigchldAction;
sigchldAction.sa_handler = SIG_IGN;
sigchldAction.sa_flags = 0;
sigemptyset(&sigchldAction.sa_mask);
if (sigaction(SIGCHLD, &sigchldAction, NULL) == -1) callError("sigaction()");
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-10-23 22:43:13

根据Linux手册页面为sigaction

POSIX.1-1990不允许将SIGCHLD的操作设置为SIG_IGN。POSIX.1-2001允许这种可能性,因此可以使用忽略SIGCHLD来防止僵尸的产生(请参见等待(2))。

也就是说,使用SIGCHLD显式忽略SIG_IGN会导致操作系统在终止时自动销毁子进程,因此不必为它们设置wait*。这通常是您想要的,尽管有时不是,因为它还阻止父进程使用wait*来确定子进程的退出状态。

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

https://stackoverflow.com/questions/46899512

复制
相关文章

相似问题

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