首页 > 代码库 > 这个可以程序主要测试高级并发服务器程序怎样写会避免僵尸进程?

这个可以程序主要测试高级并发服务器程序怎样写会避免僵尸进程?

#include <unistd.h>  #include <stdio.h>  #include<stdlib.h>#include<signal.h>int main(void)  {  //signal(SIGCHLD, SIG_IGN);   int i=0;     printf("i son/pa ppid pid  fpid\n");     //ppid指当前进程的父进程pid     //pid指当前进程的pid,     //fpid指fork返回给当前进程的值     while(1){     sleep(1);                           //之所以加入这个时间是因为,容易看出程序的变化,不然根本看不出变化,连鼠标都懂不了!       pid_t fpid=fork();         if(fpid==0)             {printf("%d child  %4d %4d %4d\n",i,getppid(),getpid(),fpid);            //return 0; //这两个效果一样的!            exit(0);            }          }  return 0;  }  [root@linux Desktop]# gcc b.c[root@linux Desktop]# ./a.outi son/pa ppid pid  fpid0 child  16980 16981    00 child  16980 16982    00 child  16980 16983    00 child  16980 16985    00 child  16980 16988    00 child  16980 16990    00 child  16980 16991    00 child  16980 16993    00 child  16980 16995    00 child  16980 16996    0^C[root@linux Desktop]# [root@linux Desktop]# ps aux | grep -w Z//产生了好多僵尸进程了root     16981  0.0  0.0      0     0 pts/2    Z+   20:38   0:00 [a.out] <defunct>root     16982  0.0  0.0      0     0 pts/2    Z+   20:38   0:00 [a.out] <defunct>root     16983  0.0  0.0      0     0 pts/2    Z+   20:38   0:00 [a.out] <defunct>root     16985  0.0  0.0      0     0 pts/2    Z+   20:38   0:00 [a.out] <defunct>root     16987  0.0  0.0   4340   804 pts/3    S+   20:38   0:00 grep -w Z[root@linux Desktop]# 当把signal(SIGCHLD, SIG_IGN);这行代码加上时输出结果如下:[root@linux Desktop]# gcc b.c[root@linux Desktop]# ./a.outi son/pa ppid pid  fpid0 child  17135 17136    00 child  17135 17137    00 child  17135 17139    00 child  17135 17140    00 child  17135 17141    00 child  17135 17142    00 child  17135 17145    00 child  17135 17147    00 child  17135 17150    00 child  17135 17151    00 child  17135 17152    0^C[root@linux Desktop]#                     //没有僵尸进程产生[root@linux Desktop]# ps aux | grep -w Zroot     17144  0.0  0.0   4336   796 pts/3    S+   20:42   0:00 grep -w Z[root@linux Desktop]# ps aux | grep -w Zroot     17149  0.0  0.0   4336   792 pts/3    S+   20:42   0:00 grep -w Z[root@linux Desktop]# 

 

这个可以程序主要测试高级并发服务器程序怎样写会避免僵尸进程?