我正在读一篇关于信号的文章,代码的这一部分,我不知道它在做什么。有人能给我解释一下吗?本文是关于创建TCP未阻塞服务器的。
struct sigaction sigchldAction;
sigchldAction.sa_handler = SIG_IGN;
sigchldAction.sa_flags = 0;
sigemptyset(&sigchldAction.sa_mask);
if (sigaction(SIGCHLD, &sigchldAction, NULL) == -1) callError("sigaction()");发布于 2017-10-23 22:43:13
根据Linux手册页面为sigaction
POSIX.1-1990不允许将SIGCHLD的操作设置为SIG_IGN。POSIX.1-2001允许这种可能性,因此可以使用忽略SIGCHLD来防止僵尸的产生(请参见等待(2))。
也就是说,使用SIGCHLD显式忽略SIG_IGN会导致操作系统在终止时自动销毁子进程,因此不必为它们设置wait*。这通常是您想要的,尽管有时不是,因为它还阻止父进程使用wait*来确定子进程的退出状态。
https://stackoverflow.com/questions/46899512
复制相似问题