我看到了一些 SIGCHLD 处理程序的示例,例如:
void child()
{
wait(0);
signal(SIGCHLD, child);
}
void server_main()
{
...
signal(SIGCHLD, child);
...
for(;;;) {
...
switch(fork()) {
...
}
}
处理程序中有两个部分让我感到困惑:1)。SIGCHLD 在子进程终止或停止时被捕获。那么为什么需要在处理程序内部调用等待呢?信号已经到了。2)。为什么需要重新安装 SIGCHLD 处理程序。信号调用不是一劳永逸地安装处理程序吗?
谢谢!