这个可以程序主要测试高级并发服务器程序怎样写会避免僵尸进程?
2014-11-06 13:17
288 查看
#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.out i son/pa ppid pid fpid 0 child 16980 16981 0 0 child 16980 16982 0 0 child 16980 16983 0 0 child 16980 16985 0 0 child 16980 16988 0 0 child 16980 16990 0 0 child 16980 16991 0 0 child 16980 16993 0 0 child 16980 16995 0 0 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>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.out i son/pa ppid pid fpid 0 child 17135 17136 0 0 child 17135 17137 0 0 child 17135 17139 0 0 child 17135 17140 0 0 child 17135 17141 0 0 child 17135 17142 0 0 child 17135 17145 0 0 child 17135 17147 0 0 child 17135 17150 0 0 child 17135 17151 0 0 child 17135 17152 0 ^C [root@linux Desktop]# //没有僵尸进程产生 [root@linux Desktop]# ps aux | grep -w 'Z' root 17144 0.0 0.0 4336 796 pts/3 S+ 20:42 0:00 grep -w Z [root@linux Desktop]# ps aux | grep -w 'Z' root 17149 0.0 0.0 4336 792 pts/3 S+ 20:42 0:00 grep -w Z [root@linux Desktop]#
<defunct>
相关文章推荐
- 这个模型用来测试并发服务器,是否会产生僵尸进程
- 此程序可以产生僵尸进程
- 怎样把一个写好的程序,打包成一个文件。.exe的,这样我一点击就可以运行,好像网上说这个是绿色软件
- 僵尸进程是如何产生的?怎样避免僵尸进程的产生
- 测试这个才可以打包 我的PYQt matplotlib numpy 等程序
- 怎样可以跨进程测试
- 僵尸进程是如何产生的?怎样避免僵尸进程的产生
- 僵尸进程是如何产生的?怎样避免僵尸进程的产生
- (unix网络编程)tcp回射程序二:避免僵尸进程
- 僵尸进程是如何产生的?怎样避免僵尸进程的产生
- 怎样让自己的程序进程不让别人强行关闭掉
- udp并发服务器程序之客户端测试----初步
- 因为公司的产品用asp开发, 前一段时间用asp写了一个生成静态页面并分页的程序,但缘于对.net的热爱,写了这个.net下的生成静态页面并分页的程序。 主要的原理就是替换模板里的特殊字符。
- udp并发服务器程序之客户端测试----初步修改
- VB写出一段程序可以强行结束某个进程
- c#怎样打包 可以使另一个程序随开机自动启动
- #在一个文本框中输入“sdfsf”等内容,提交表单后,页面出现错误,不知怎样可以捕获这个异常?
- Mysql的最大连接数怎样用java程序测试
- udp并发服务器程序之客户端测试----再次修改
- 怎样让自己的程序进程不让别人强行关闭掉