当前所在位置:珠峰网资料 >> 计算机 >> 计算机等级考试 >> 正文
linux认证辅导:僵死的避免
发布时间:2010/7/13 16:32:40 来源:城市学习网 编辑:ziteng
  一个进程终止但是父进程尚未进行回收,就是僵死。
  避免僵死可以调用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);
  }
  }
广告合作:400-664-0084 全国热线:400-664-0084
Copyright 2010 - 2017 www.my8848.com 珠峰网 粤ICP备15066211号
珠峰网 版权所有 All Rights Reserved