孤儿进程和僵尸进程详解
2017-12-26 23:31
281 查看
之前没有特别区分这两种概念,以为孤儿进程就是僵尸进程,但是其实是有差别的,下面我们从概念上来看
孤儿进程:
僵尸进程:
下面是我做的实验:
1.孤儿进程代码实例:
-9杀死父进程
1.僵尸进程代码实例:
总结:
孤儿进程会被init进程回收
僵尸进程可以通过top命令查看,然后通过关键字defunct杀死它
孤儿进程:
父进程先死了,子进程还在继续运行,这样的进程会里面被init(ppid=1)进程回收
僵尸进程:
子进程自己退出了,父进程没有调用wait或者waidpid函数清理子进程的状态,所以这个状态一直会在进程列表存在
下面是我做的实验:
1.孤儿进程代码实例:
#include <stdio.h> #include <stdlib.h> #include <unistd.h> #include <sys/stat.h> #include <sys/stat.h> #include <sys/types.h> int main(int argc, char *argv[]) { pid_t pid; pid = fork(); if (pid < 0) { printf("fork fail"); exit(1); } else if (pid > 0) { printf("parent process\n"); exit(1); } setsid(); pid = fork(); if (pid < 0) { printf("second fork fail"); exit(1); } else if (pid > 0) { printf("second parent process"); exit(1); } //这里再开10个子进程 int i; for (i = 0; i< 10; i++) { pid_t sonpid; sonpid = fork(); if (sonpid < 0) { printf("fork fail"); exit(1); } else if (pid > 0) { exit(1); } else { while(1) { printf("sonpid=%d\n", sonpid); } } } return 0; }
-9杀死父进程
1.僵尸进程代码实例:
1 #include <stdio.h> 2 #include <unistd.h> 3 #include <stdlib.h> 4 5 int main(int argc, char *argv[]) { 6 7 pid_t pid; 8 pid = fork(); 9 if (pid <0) { 10 printf("fork fail\n"); 11 exit(1); 12 } else if (pid == 0) { 13 printf("son process fail\n"); 14 exit(1); 15 } 16 while(1) { 17 printf("parent process"); 18 } 19 return 0; 20 }
总结:
孤儿进程会被init进程回收
僵尸进程可以通过top命令查看,然后通过关键字defunct杀死它
相关文章推荐
- 详解僵尸进程与孤儿进程
- Linux中僵尸进程和孤儿进程详解
- linux中的孤儿进程和僵尸进程详解及模拟实现
- 孤儿进程和僵尸进程[详解]
- 孤儿进程和僵尸进程[详解]
- 孤儿进程和僵尸进程详解
- 详解僵尸进程和孤儿进程
- 浅析三种特殊进程:孤儿进程,僵尸进程和守护进程.
- 孤儿进程和僵尸进程的区别
- 孤儿进程与僵尸进程
- 僵尸进程与孤儿进程
- Python学习之僵尸进程的产生和清除详解
- 僵尸进程与孤儿进程的区别
- 孤儿进程与僵尸进程
- 孤儿进程与僵尸进程_笔记
- 快速理解孤儿进程和僵尸进程
- 孤儿进程和僵尸进程
- PHP实现系统编程(二) --- 多进程编程介绍及孤儿进程、僵尸进程
- 浅析三种特殊进程:孤儿进程,僵尸进程和守护进程.
- 僵尸进程与孤儿进程