声明: 1. 本文为我的个人复习总结, 并那种从零基础开始普及知识 内容详细全面, 言辞官方的文章
              2. 由于是个人总结, 所以用最精简的话语来写文章
              3. 若有错误不当之处, 请指出

子进程:

由fork( )创建, 该函数被调用一次,但返回两次(子进程的返回值是0,而父进程的返回值是子进程id)

子进程得到的只是父进程的拷贝(拷贝其内存空间, 代码空间, 数据空间, 程序计数器pc值),而不是父进程本身

僵尸进程:

子进程结束了, 但父进程暂未对其资源进行回收; task_struct结构还保存在进程列表中

孤儿进程:

在回收僵尸进程之前, 如果父进程结束了,则僵尸进程变为孤儿进程,进而被init进程接管、回收

注意: ps出来以Z开头的便是僵尸进程, kill -9 并不能直接死僵尸进程

为什么需要僵尸进程(保留task_struct)?

因为task_struct里面保存了进程的pid、退出码、以及一些统计信息, 父进程可能会关心这些信息

如何处理僵尸进程?

三个方案:

  1. 父进程调用wait( )/waitpid( )

    缺点: wait调用是阻塞的, 如果调用wait时子进程还没有退出, 将阻塞住父进程 影响性能

  2. kill父进程

    使僵尸进程变为孤儿进程, 从而被init进程接管、回收

    缺点: 父进程可能还有作用, 不该随随便便杀死

  3. 通过进程通信的信号机制 异步回调通知进行回收 (最佳)

    编写程序时, 子进程退出前向父进程发送SIGCHLD信号; 父进程回调函数收到SIGCHLD信号后 便去调用wait( )/waitpid( ) 回收 子僵尸进程

什么时候会发生 僵尸进程一直不被回收 的情况?

在采用第三种方案时, 如果父进程是一个循环 永久不会结束, 那么子进程就会一直保持僵尸状态

子进程、僵尸进程、孤儿进程(个人总结)相关推荐

  1. day34 并行并发、进程开启、僵尸及孤儿进程

    day34 并行并发.进程开启.僵尸及孤儿进程 1.并行与并发 什么是并行? 并行指的是多个进程同时被执行,是真正意义上的同时 什么是并发? 并发指的是多个程序看上去被同时执行,这是因为cpu在多个程 ...

  2. 僵尸和孤儿进程及虚拟内存

    调研进程的调度算法. 根据系统的资源分配策略所规定的资源分配算法.对于不同的的系统和系统目标,通常采用不同的调度算法,例如,在批处理系统中,为了照顾为数众多的段作业,应采用短作业优先的调度算法:又如在 ...

  3. python 僵尸进程孤儿进程

    僵尸进程&孤儿进程 On Unix and Unix-like computer operating systems, a zombie process or defunct process ...

  4. fork函数创建子进程僵尸进程孤儿进程详讲

    目录 1.创建子进程 1.1 fork() 1.2 fork()的返回值 1.3.fork的原理 1.4既然父子进程的代码是相同的,那么子进程是从哪行代码开始执行的? 1.5针对fork的返回值,让父 ...

  5. 浅析三种特殊进程:孤儿进程,僵尸进程和守护进程

    其实有时想想linux内核的设计也蕴含着很多人生哲学,在linux中有这么几个特殊进程中,我们一开始见到它们的名字可能还会觉得很诧异,但在了解完了原理后,我们仔细想想,这样的命名也不无道理!下面我就给 ...

  6. 浅析三种特殊进程:孤儿进程,僵尸进程和守护进程.

    其实有时想想linux内核的设计也蕴含着很多人生哲学,在linux中有这么几个特殊进程中,我们一开始见到它们的名字可能还会觉得很诧异,但在了解完了原理后,我们仔细想想,这样的命名也不无道理!下面我就给 ...

  7. 僵尸进程孤儿进程与守护进程

    其实有时想想linux内核的设计也蕴含着很多人生哲学,在linux中有这么几个特殊进程中,我们一开始见到它们的名字可能还会觉得很诧异,但在了解完了原理后,我们仔细想想,这样的命名也不无道理!下面我就给 ...

  8. 守护进程/僵尸进程/孤儿进程

    一 守护进程 守护进程就是在后台运行,不与任何终端关联的进程,,一个守护进程的父进程是init进程,它是一个孤儿进程,没有控制终端,所以任何输出,无论是向标准输出设备stdout还是标准出错设备std ...

  9. 有两个这样的进程:僵尸进程孤儿进程,蓝瘦香菇

    程序员的成长之路 互联网/程序员/技术/资料共享 关注 阅读本文大概需要 5.8 分钟. 来自:https://juejin.im/post/5f20fbeae51d45348675fa78 那时刚写 ...

  10. 【看表情包学Linux】进程状态解析 | 运行态 | 终止态 | 进程挂起与阻塞 | 运行态R | 阻塞态S/D | 死亡态X | 僵尸态Z | 暂停态T/t | 僵尸进程 | 孤儿进程

最新文章

  1. UTRAN 的用户面和控制面
  2. 过滤器在图纸上的符号_零基础秒懂,看了这份建筑符号清单,就能快速识别建筑图纸,收藏...
  3. framework7使用笔记
  4. SLAM/检测跟踪/多传感器融合方向实习生招聘 | 腾讯Robotics X实验室
  5. php文本域输出_PHP转换文本框内容为HTML格式的方法
  6. python软件怎么用-Python如何创建应用程序
  7. atitit.微信项目开发效率慢的一些总结
  8. 数据压缩 第四次作业
  9. 使用双指针可能只需要遍历一趟哦(洛谷P1147题题解,Java语言描述)
  10. xp系统怎样启动打印机服务器,WinXP系统如何开启Printspooler服务?
  11. 电力拖动(工厂电气控制)实验装置
  12. TwinCAT3实现OPCUA通讯问题总结
  13. 读“DB Sharding at Netlog”看DB-Scale-Out(推荐,分片)zt
  14. java将日期转换成大写_将util.Date转换为大写(农历)时间
  15. PHP资源汇总-内容包括模板、框架、数据库、安全等方面的库和工具
  16. 用u盘装linux系统黑屏,u盘启动黑屏 u盘装系统启动不了黑屏咋办
  17. java基于springboot酒店客房预定管理系统ssm
  18. 乐山市计算机学校灵异事件,真人真事:我们学校那些灵异的事情(西南交通大学灵异事件)...
  19. 2016 UESTC Training for Search Algorithm String I - 谭爷剪花布条 KMP
  20. CondaHTTPError: HTTP 404 NOT FOUND for url <https://repo.anaconda.com/pkgs/main/noarch/repodata.json

热门文章

  1. [译] 为何前端开发如此不稳定
  2. java-GUI-实战-贪吃蛇游戏V1.1(随缘更新)
  3. 计算机的硬件故障维修,计算机硬件故障维修的分类和技巧论文原稿
  4. 拆解康柏321电池之电池串并联容量计算
  5. 复盘案例:橱柜安装不合适,导致柜体、台面均重做
  6. 关于 xx客 的词的解释
  7. 【智能合约实战】——入门级DAPP,没有想象中那么难
  8. 【转】Java8 函数式编程详解
  9. 华为大数据平台凭什么成为行业领跑者?
  10. Base64的编码和解码