linux 僵尸进程

来源:互联网 发布:康奈尔大学知乎 编辑:程序博客网 时间:2024/04/20 13:15

一直说僵尸进程,现在的LINUX做的还真不容易产生:

 

代码:

 1  #include <stdio.h>
  2 #include <unistd.h>

  3 #include <stdlib.h>
  4 int main()
  5 {
  6         pid_t pid;
  7
  8         if ( (pid = fork ()) < 0)
  9                 printf("wait error/n");
 10         else if  (pid == 0)                /*child*/
 11                 exit(0);
 12         else if (pid > 0)
 13                 pause();
 14
 15 }

这样就会产生一个僵尸

观察

ps -el | grep Z

看到标记位Z的就是僵尸,可以看到你编译出可执行程序

1 Z  1000  3547  3546  0  80   0 -     0 exit   pts/6    00:00:00 zombin <defunct>

 

要避免僵尸进程

fork两次就行啦

代码:

 9           if ( (pid = fork() ) < 0)
 10                 err_sys ("fork error");
 11         else if (pid == 0)
 12         {
 13                 if ( (pid = fork()) < 0)
 14                         err_sys ("fork two error");
 15                 else if (pid > 0)
 16                         exit (0);   

 

原创粉丝点击