如何避免僵尸进程

来源:互联网 发布:电话变声软件 编辑:程序博客网 时间:2024/05/19 20:42

最近总是会遇到僵尸进程,很烦恼,于是博主就阅览群书,终于找到了这种方法:


调用fork两次就好了!代码如下:

#include "apue.h"#include <sys/wait.h>intmain(void)...{     pid_t    pid;    if ((pid = fork()) < 0) ...{         err_sys("fork error");     } else if (pid == 0) ...{     /**//* first child */        if ((pid = fork()) < 0)             err_sys("fork error");        else if (pid > 0)             exit(0);    /**//* parent from second fork == first child */        /**//*          * We're the second child; our parent becomes init as soon          * as our real parent calls exit() in the statement above.          * Here's where we'd continue executing, knowing that when          * we're done, init will reap our status.         */         sleep(2);         printf("second child, parent pid = %d ", getppid());         exit(0);     }        if (waitpid(pid, NULL, 0) != pid)  /**//* wait for first child */         err_sys("waitpid error");    /**//*      * We're the parent (the original process); we continue executing,      * knowing that we're not the parent of the second child.     */     exit(0);}


0 0
原创粉丝点击