位置:海鸟网 > IT > linux/Unix >

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 = %dn", getpid());

  exit(0);

  }

  }

  else//父进程

  {

  sleep(3);

  printf("parent!n");

  exit(0);

  }

  }