我有一个通常想要接收SIGCHLD
事件的主管程序。然而,在它接收SIGTERM
到或类似的信号之后,忽略SIGCHLD
事件以防止僵尸是安全且可取的。问题是我不确定signal(2)
在信号处理程序中调用是否合法,例如SIGTERM
调用signal(SIGCHLD, SIG_IGN)
。它似乎不会引起问题,但我知道您可以在信号处理程序中执行的操作有很多限制,而且我无法确定调用signal
是否在禁区内。
那么:这是合法的,可靠的吗?如果没有,是否有另一种方法可以确保在SIGTERM
可能僵尸出现时没有孩子仍在跑步,即使他们没有得到适当wait
的教育?