僵死进程和孤儿进程
来源:互联网 发布:game center数据删除 编辑:程序博客网 时间:2024/06/05 22:40
环境:Vmware Workstation;CentOS-6.4-x86_64
程序要求:
编写一个孤儿进程,这个孤儿进程可以创建100个僵死进程。
分析:
1、首先在一个进程中fork,创建两个完全一样的进程。
2、退出父进程,使子进程成为孤儿进程。
3、在孤儿进程中循环创建进程,并结束孙子进程,使子进程成为僵死进程。
实现步骤:
1、创建并编辑源文件main.c:
#include <stdio.h>#include <stdlib.h>#include <string.h>#include <errno.h>#include <unistd.h>int main(int argc, char *args[]){// 在程序中fork,创建两个一样的进程pid_t id = fork();// 判断fork是否成功if (id == -1){// 输出出错信息printf("fork failed : %s\n", strerror(errno));}// 结束父进程,使子进程成为孤儿进程if (id > 0){exit(0);}// 执行子进程的代码else{// 创建循环变量int i = 0;for(; i < 100; i++){// fork产生孙子进程pid_t temp_id = fork();// 判断fork是否成功if (temp_id == -1){// 输出出错信息printf("fork failed : %s\n", strerror(errno));}// 执行孙子进程的内容if (temp_id == 0){// 退出孙子进程,使子进程成为僵死进程exit(0);}}// 在子进程退出之前,让其暂停// 否则,子进程退出的话,僵死进程和孤儿进程也就没法实现了pause();}return 0;}
2、创建并编辑文件makefile:
.SUFFIXES:.c .oCC=gccSRCS=main.cOBJS=$(SRCS:.c=.o)EXEC=mainstart: $(OBJS)$(CC) -o $(EXEC) $(OBJS)@echo "-----------------------------OK-----------------------".c.o:$(CC) -Wall -o $@ -c $<clean:rm -rf $(EXEC) $(OBJS)
3、编译并执行程序:
[negivup@negivup mycode]$ makegcc -Wall -o main.o -c main.cgcc -o main main.o-----------------------------OK-----------------------[negivup@negivup mycode]$ ./main
4、查看进程信息:
[negivup@negivup ~]$ ps -auxnegivup 16249 0.0 0.0 3916 136 pts/1 S 19:21 0:00 main 根据这个号杀死进程negivup 16250 0.0 0.0 0 0 pts/1 Z 19:21 0:00 [main] <defunct>negivup 16251 0.0 0.0 0 0 pts/1 Z 19:21 0:00 [main] <defunct>negivup 16252 0.0 0.0 0 0 pts/1 Z 19:21 0:00 [main] <defunct>negivup 16253 0.0 0.0 0 0 pts/1 Z 19:21 0:00 [main] <defunct>negivup 16254 0.0 0.0 0 0 pts/1 Z 19:21 0:00 [main] <defunct>negivup 16255 0.0 0.0 0 0 pts/1 Z 19:21 0:00 [main] <defunct>negivup 16256 0.0 0.0 0 0 pts/1 Z 19:21 0:00 [main] <defunct>......可以看出,已死进程刚好100个,也就是说,僵死进程有100个。
5、回收僵死进程以及孤儿进程:
[negivup@negivup ~]$ kill 16429 杀死进程negivup 4997 0.0 0.0 97860 1792 ? S 08:16 0:02 sshd: negivup@pts/negivup 5701 0.0 0.1 108440 1916 pts/1 Ss+ 09:10 0:00 -bashnegivup 14849 0.0 0.0 108328 1864 pts/0 Ss 18:03 0:00 -bashpostfix 14916 0.0 0.1 78800 3252 ? S 18:07 0:00 pickup -l -t fiforoot 16365 0.0 0.0 100900 564 ? S 19:22 0:00 sleep 60negivup 16367 2.0 0.0 110232 1144 pts/0 R+ 19:23 0:00 ps -aux会发现,程序中没有僵死进程了。
PS:根据传智播客视频学习整理得出。
0 0
- 僵死进程和孤儿进程
- 僵死进程和孤儿进程
- 僵死进程和孤儿进程
- 孤儿进程、僵死进程
- linux 中的僵死进程和孤儿进程
- 僵死进程与孤儿进程
- 僵死进程与孤儿进程
- 孤儿进程与僵死进程
- 孤儿进程与僵死进程
- 僵死进程和孤儿进程以及精灵进程
- 有关僵死进程和孤儿进程的小结
- Liunx下的僵死进程和孤儿进程
- 【原创】《Linux高级程序设计》杨宗德著 - 进程管理与程序开发 - 孤儿进程和僵死进程
- 快速理解Linux下僵死进程、孤儿进程和守护进程及无名管道
- Unix进程关系—僵死进程与孤儿进程
- 孤儿进程和僵死进程的总结----很好的一篇文章,记录下来
- 通俗易懂的“僵死进程与孤儿进程”讲解
- 编写一个孤儿进程,这个孤儿进程可以同时创建100个僵死进程
- 软件测试的烦恼
- java虚拟机部分笔记
- UICollectionView实现书本翻页布局
- Testlink 与 mantis的集成w
- OC- OC数值类型、NSNumber、NSString、NSMutableString
- 僵死进程和孤儿进程
- 百度地图
- memcached 的安装问题
- 当打开sql server2008打开,出现报错“评估期已过。有关如何升级的测试版软件的信息请访问,http://www.....”
- 计算器的实现
- 我的架构经验小结(四)—— 实战中演化的三层架构
- File,FileInputStream,FileReader,InputStreamReader,BufferedReader 的使用和区别
- 软件缺陷内容
- 对话框伸缩功能的实现