子进程、僵尸进程、孤儿进程(个人总结)
声明: 1. 本文为我的个人复习总结, 并非那种从零基础开始普及知识 内容详细全面, 言辞官方的文章
2. 由于是个人总结, 所以用最精简的话语来写文章
3. 若有错误不当之处, 请指出
子进程:
由fork( )创建, 该函数被调用一次,但返回两次(子进程的返回值是0,而父进程的返回值是子进程id)
子进程得到的只是父进程的拷贝(拷贝其内存空间, 代码空间, 数据空间, 程序计数器pc值),而不是父进程本身
僵尸进程:
子进程结束了, 但父进程暂未对其资源进行回收; task_struct结构还保存在进程列表中
孤儿进程:
在回收僵尸进程之前, 如果父进程结束了,则僵尸进程变为孤儿进程,进而被init进程接管、回收
注意: ps出来以Z开头的便是僵尸进程, kill -9 并不能直接死僵尸进程
为什么需要僵尸进程(保留task_struct
)?
因为task_struct
里面保存了进程的pid、退出码、以及一些统计信息, 父进程可能会关心这些信息
如何处理僵尸进程?
三个方案:
父进程调用wait( )/waitpid( )
缺点: wait调用是阻塞的, 如果调用wait时子进程还没有退出, 将阻塞住父进程 影响性能
kill父进程
使僵尸进程变为孤儿进程, 从而被init进程接管、回收
缺点: 父进程可能还有作用, 不该随随便便杀死
通过进程通信的信号机制 异步回调通知进行回收 (最佳)
编写程序时, 子进程退出前向父进程发送
SIGCHLD
信号; 父进程回调函数收到SIGCHLD
信号后 便去调用wait( )/waitpid( ) 回收 子僵尸进程
什么时候会发生 僵尸进程一直不被回收 的情况?
在采用第三种方案时, 如果父进程是一个循环 永久不会结束, 那么子进程就会一直保持僵尸状态
子进程、僵尸进程、孤儿进程(个人总结)相关推荐
- day34 并行并发、进程开启、僵尸及孤儿进程
day34 并行并发.进程开启.僵尸及孤儿进程 1.并行与并发 什么是并行? 并行指的是多个进程同时被执行,是真正意义上的同时 什么是并发? 并发指的是多个程序看上去被同时执行,这是因为cpu在多个程 ...
- 僵尸和孤儿进程及虚拟内存
调研进程的调度算法. 根据系统的资源分配策略所规定的资源分配算法.对于不同的的系统和系统目标,通常采用不同的调度算法,例如,在批处理系统中,为了照顾为数众多的段作业,应采用短作业优先的调度算法:又如在 ...
- python 僵尸进程孤儿进程
僵尸进程&孤儿进程 On Unix and Unix-like computer operating systems, a zombie process or defunct process ...
- fork函数创建子进程僵尸进程孤儿进程详讲
目录 1.创建子进程 1.1 fork() 1.2 fork()的返回值 1.3.fork的原理 1.4既然父子进程的代码是相同的,那么子进程是从哪行代码开始执行的? 1.5针对fork的返回值,让父 ...
- 浅析三种特殊进程:孤儿进程,僵尸进程和守护进程
其实有时想想linux内核的设计也蕴含着很多人生哲学,在linux中有这么几个特殊进程中,我们一开始见到它们的名字可能还会觉得很诧异,但在了解完了原理后,我们仔细想想,这样的命名也不无道理!下面我就给 ...
- 浅析三种特殊进程:孤儿进程,僵尸进程和守护进程.
其实有时想想linux内核的设计也蕴含着很多人生哲学,在linux中有这么几个特殊进程中,我们一开始见到它们的名字可能还会觉得很诧异,但在了解完了原理后,我们仔细想想,这样的命名也不无道理!下面我就给 ...
- 僵尸进程孤儿进程与守护进程
其实有时想想linux内核的设计也蕴含着很多人生哲学,在linux中有这么几个特殊进程中,我们一开始见到它们的名字可能还会觉得很诧异,但在了解完了原理后,我们仔细想想,这样的命名也不无道理!下面我就给 ...
- 守护进程/僵尸进程/孤儿进程
一 守护进程 守护进程就是在后台运行,不与任何终端关联的进程,,一个守护进程的父进程是init进程,它是一个孤儿进程,没有控制终端,所以任何输出,无论是向标准输出设备stdout还是标准出错设备std ...
- 有两个这样的进程:僵尸进程孤儿进程,蓝瘦香菇
程序员的成长之路 互联网/程序员/技术/资料共享 关注 阅读本文大概需要 5.8 分钟. 来自:https://juejin.im/post/5f20fbeae51d45348675fa78 那时刚写 ...
- 【看表情包学Linux】进程状态解析 | 运行态 | 终止态 | 进程挂起与阻塞 | 运行态R | 阻塞态S/D | 死亡态X | 僵尸态Z | 暂停态T/t | 僵尸进程 | 孤儿进程
最新文章
- UTRAN 的用户面和控制面
- 过滤器在图纸上的符号_零基础秒懂,看了这份建筑符号清单,就能快速识别建筑图纸,收藏...
- framework7使用笔记
- SLAM/检测跟踪/多传感器融合方向实习生招聘 | 腾讯Robotics X实验室
- php文本域输出_PHP转换文本框内容为HTML格式的方法
- python软件怎么用-Python如何创建应用程序
- atitit.微信项目开发效率慢的一些总结
- 数据压缩 第四次作业
- 使用双指针可能只需要遍历一趟哦(洛谷P1147题题解,Java语言描述)
- xp系统怎样启动打印机服务器,WinXP系统如何开启Printspooler服务?
- 电力拖动(工厂电气控制)实验装置
- TwinCAT3实现OPCUA通讯问题总结
- 读“DB Sharding at Netlog”看DB-Scale-Out(推荐,分片)zt
- java将日期转换成大写_将util.Date转换为大写(农历)时间
- PHP资源汇总-内容包括模板、框架、数据库、安全等方面的库和工具
- 用u盘装linux系统黑屏,u盘启动黑屏 u盘装系统启动不了黑屏咋办
- java基于springboot酒店客房预定管理系统ssm
- 乐山市计算机学校灵异事件,真人真事:我们学校那些灵异的事情(西南交通大学灵异事件)...
- 2016 UESTC Training for Search Algorithm String I - 谭爷剪花布条 KMP
- CondaHTTPError: HTTP 404 NOT FOUND for url <https://repo.anaconda.com/pkgs/main/noarch/repodata.json