歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux服務器 >> Linux如何避免進程僵死

Linux如何避免進程僵死

日期:2017/3/2 16:33:21   编辑:Linux服務器

一個進程終止但是父進程尚未進行回收,就是僵死。

  避免僵死可以調用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);

  }

  }

Copyright © Linux教程網 All Rights Reserved