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