C - 避免在代码的一部分中调用 sigchld 处理程序



我的程序上有一个 SIGCHLD 处理程序,它可以收获僵尸进程。

如何避免在代码中执行多个fork((调用和waitpid((调用的代码部分中调用SIGCHLD处理程序?

因为现在,当我进行 fork(( 调用并且孩子完成执行时,它会返回一个 SIGCHLD 信号,因此它调用了 SIGCHLD 处理程序,但我想在代码的那部分而不是在处理程序中收获进程?

我该怎么做?阻断 SIGCHLD 信号?

试试这个:

sigemptyset(&set);
sigaddset(&set, SIGCHLD);
s = pthread_sigmask(SIG_BLOCK, &set, NULL);

稍后,当您完成此操作时,请使用 SIG_UNBLOCK 取消阻止 sig 处理程序。

最新更新