编写一unix程序,防止僵尸进程的出现。
1. 父进程调用wait或waitpid等待子进程结束。
2. 两次fork(),使子进程成为孤儿进程。
3. 父进程处理SIGCHILD信号,使用wait进行处理。
int main()
{
int pid;
pid = fork();
if(pid == 0)
{
// do children
}
else
{
signal(SIGCHLD,
(sig_t )sig_chld_handler);
// do parient
}
}
void sig_chld_handler(void) {
//other proccess
while (waitpid(-1, NULL, WNOHANG)
> 0);
}