经典指数          
原因
1876
浏览数
0
收藏数
 

编写一unix程序,防止僵尸进程的出现。

     举报   纠错  
 
切换
1 个答案

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);

}

 
切换
撰写答案