您的位置: 飞扬精品软件园 >> 文章中心 >> 系统教程 >> Linux系统 >> 僵死的避免

相关文章链接

最新新闻资讯

    僵死的避免

    僵死的避免


    • 阅览次数: 文章来源: 原文作者: 整理日期: 2010-07-12

    一个进程终止但是父进程尚未进行回收,就是僵死。

      避免僵死可以调用waitpid等待子进程结束,但是其间父进程一直阻塞。

      更好的办法是调用两次fork函数。

      源代码如下:

      #include<sys/types.h>

      #include<unistd.h>

      #include<sys/wait.h>

      int main()

      {

      pid_t pid;

      if((pid = fork()) < 0)//出错

      {

      perror("fork!\n");

      }

      else if(pid == 0)//子进程1

      {//子进程中创建进程2

      if((pid =fork()) < 0)//出错

      {

      perror("fork!\n");

      }

      else if(pid > 0)//进程1

      {

      exit(0);//退出

      }

      else//子进程2

      {

      sleep(2);

      printf("second child, parent pid = %d\n", getpid());

      exit(0);

      }

      }

      else//父进程

      {

      sleep(3);

      printf("parent!\n");

      exit(0);

      }

      }


查看所有评论

网友对僵死的避免的评论

网名:
主题:
内容:
验证码: