一.僵死进程(僵尸进程)
1.产生的原因或者条件
当子进程先于父进程结束,父进程没有获取子进程的退出码,此时子进程变成僵死进程;
2.如何去处理僵死进程?
(1)父进程先结束(子进程会变成孤儿进程,孤儿进程会被收养(红帽子是init(pid==1)收
养孤儿进程,Unbuntu是操作系统指定了一个进程));
(2)父进程调用wait()方法获取子进程的退出码;
1. #include <stdio.h>
2. #include <stdlib.h>
3. #include <unistd.h>
4. #include <string.h>
5. #include <assert.h>
6.
7. int main(int argc, char* argv[],char* envp[])
8. {
9. char * s = NULL;
10. int n = 0;
11.
12. pid_t pid = fork();
13. assert( pid != -1 );
14.
15. if ( pid == 0 )
16. {
17. s = "child";
18. n = 4;
19. }
20. else
21. {
22. s = "parent";
23. n = 10;
24. }
25.
26. int i = 0;
27.
28. for(; i < n; i++ )
29. {
30. printf("pid=%d,s=%s\n",getpid(),s);
31. sleep(1);
32. }
33.
34. exit(0);
35. }
处理僵死进程的方法二:父进程调用wait方法;
int val = 0;
27. int id = wait(&val);
28.
29. if ( WIFEXITED(val) )
30. {
31. printf("id=%d,val=%d\n",id,WEXITSTATUS(val));
32. }
33.
34. }
35.
36. int i = 0;
37. for( ; i < n; i++ )
38. {
39. printf("pid=%d,s=%s\n",getpid(),s);
40. sleep(1);
41. }
42.
43. exit(3);
44. }
一.僵死进程(僵尸进程)相关推荐
- 浅析三种特殊进程:孤儿进程,僵尸进程和守护进程
其实有时想想linux内核的设计也蕴含着很多人生哲学,在linux中有这么几个特殊进程中,我们一开始见到它们的名字可能还会觉得很诧异,但在了解完了原理后,我们仔细想想,这样的命名也不无道理!下面我就给 ...
- 浅析三种特殊进程:孤儿进程,僵尸进程和守护进程.
其实有时想想linux内核的设计也蕴含着很多人生哲学,在linux中有这么几个特殊进程中,我们一开始见到它们的名字可能还会觉得很诧异,但在了解完了原理后,我们仔细想想,这样的命名也不无道理!下面我就给 ...
- 守护进程/僵尸进程/孤儿进程
一 守护进程 守护进程就是在后台运行,不与任何终端关联的进程,,一个守护进程的父进程是init进程,它是一个孤儿进程,没有控制终端,所以任何输出,无论是向标准输出设备stdout还是标准出错设备std ...
- Linux中的defunct进程(僵尸进程)
一.什么是defunct进程(僵尸进程)? 在 Linux 系统中,一个进程结束了,但是他的父进程没有等待(调用wait / waitpid)他,那么他将变成一个僵尸进程.当用ps命令观察进程的执行状 ...
- linux系统编程学习_(2)进程控制-- fork函数、exec函数族、回收子进程--孤儿进程僵尸进程、wait函数
linux系统编程学习_(2)进程控制-- fork函数.exec函数族.回收子进程–孤儿进程僵尸进程.wait函数 进程控制 fork()函数 创建一个子进程. pid_t fork(void); ...
- Kill杀死Linux中的defunct进程(僵尸进程)
一.什么是defunct进程(僵尸进程)? 在 Linux 系统中,一个进程结束了,但是他的父进程没有等待(调用wait / waitpid)他,那么他将变成一个僵尸进程.当用ps命令观察进程的执行状 ...
- java defunct怎么杀掉_杀死Linux中的defunct进程(僵尸进程)的方法指南
一.什么是defunct进程(僵尸进程)在 Linux 系统中,一个进程结束了,但是他的父进程没有等待(调用wait / waitpid)他,那么他将变成一个僵尸进程.当用ps命令观察进程的执行状态时 ...
- 【Linux】如何杀掉defunct进程-僵尸进程
如何杀掉defunct进程-僵尸进程 defunct进程(僵尸进程) 什么是僵尸进程 杀死僵尸进程 1.重启服务器 2.杀死父进程 defunct进程(僵尸进程) 什么是僵尸进程 僵尸进程是一个早已死 ...
- linux里面有mysql的僵尸进程_Linux中的defunct进程(僵尸进程)
一.什么是defunct进程(僵尸进程)? 在 Linux 系统中,一个进程结束了,但是他的父进程没有等待(调用wait / waitpid)他,那么他将变成一个僵尸进程.当用ps命令观察进程的执行状 ...
最新文章
- 用 CentOS 做一个 BGP 路由器
- 超强平衡机器人,走钢丝、玩忍者步伐,还可以做瑜伽动作,不受干扰的那种 | IEEE 2020...
- key可以重复的map集合:IdentityHashMap
- LeetCode上删除链表末尾第N个节点算法——Remove Nth Node From End of List
- java自动触发_我们可以自动使用应用程序触发器调用后台任
- c++ opencv 识别车牌_小强学Python+OpenCV之-1.0开篇
- wincc服务器客户端用虚拟机,什么情况下用wincc服务器与客户端
- Spring Cloud Zuul网关集成JWT身份验证学习总结
- 北大中文核心期刊目录(2004年版)
- 用于网络销售的虚拟产品演示软件
- 新能源充电桩后台管理系统平台
- win10电脑:。。。该内存不能为written.要终止程序,请单击确定
- 写给Gallen1983
- [附源码]java毕业设计st音乐网站论文
- html复杂表格,横向多级表头,纵向多级表头,合并行或列
- 树莓派2022-04-04bullseye版本安装
- 销售管理系统C语言课程设计
- jzoj 3837 心灵终结
- m3u8文件里只有js链接,没有ts链接,和key文件的一点记录
- HTML5+CSS3小实例:有趣的沙漏加载动画