【发布时间】:2013-05-27 14:07:12
【问题描述】:
我有一个主管程序,它通常希望接收SIGCHLD 事件。但是,在它收到SIGTERM 或类似信号后,忽略SIGCHLD 事件以防止僵尸是安全且可取的。问题是我不确定在信号处理程序中调用signal(2) 是否合法,例如SIGTERM 致电 signal(SIGCHLD, SIG_IGN)。它似乎不会引起问题,但我知道你可以在信号处理程序中执行的操作有很多限制,我无法弄清楚调用 signal 是否在禁区。
那么:这是否合法、可靠?如果没有,是否有另一种方法来确保在SIGTERM 时仍在运行的孩子不会僵尸,即使他们没有正确地waited on?
【问题讨论】: