会计考友 发表于 2012-8-4 12:13:19

Linux认证:系统进程僵死的避免

一个进程终止但是父进程尚未进行回收,就是僵死。
  避免僵死可以调用waitpid等待子进程结束,但是其间父进程一直阻塞。
  更好的办法是调用两次fork函数。
  源代码如下:
  #include
  #include
  #include
  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);
  }
  }
页: [1]
查看完整版本: Linux认证:系统进程僵死的避免