概念

僵死状态(Zombies)是一个比较特殊的状态。
当进程退出并且父进程没有读取到子进程退出的返回代码时就会产生僵尸进程。僵尸进程会以终止状态保持在进程表中,并且会一直在等待父进程读取退出状态代码。所以,只要子进程退出,父进程还在运行,但父进程没有读取子进程状态,子进程进入Z状态

产生原因

在子进程终止后到父进程调用wait()前的时间里,子进程被称为zombie;
a. 子进程结束后向父进程发出SIGCHLD信号,父进程默认忽略了它
b. 父进程没有调用wait()或waitpid()函数来等待子进程的结束
c. 网络原因有时会引起僵尸进程;

危害

  • 占用系统资源
  • 内存泄漏

如何防止僵尸进程

  • 让僵尸进程成为孤儿进程,由init进程回收;(手动杀死父进程)

    • signal(SIGCHLD, SIG_IGN); 忽略SIGCHLD信号,这是一个常用于提升并发服务器性能的技巧。因为并发服务器常常fork很多子进程,子进程终结之后需要服务器进程去wait清理资源。如果将此信号的处理方式设置为忽略,可让内核把僵尸进程转交给init进程去处理,省去了大量僵尸进用系统资源。
  • 2) 调用fork()两次;
  • 3) 捕捉SIGCHLD信号,并在信号处理函数中调用wait函数;
    • https://blog.csdn.net/csdn_kou/article/details/81057339

wait()和waitpid()的参数解析

https://blog.csdn.net/csdn_kou/article/details/81091191

僵尸进程的产生,危害和解决方案相关推荐

  1. python僵尸进程和孤儿进程_进程3.0——进程状态与僵尸进程、孤儿进程

    进程3.0--进程状态与僵尸进程.孤儿进程 进程状态 一个进程的生命周期可以划分为一组状态,这些状态刻画了整个进程.进程状态即体现一个进程的生命状态 一般来说,进程有五种状态:创建状态:进程在创建时需 ...

  2. Linux操作系统之僵尸进程

    文章目录 一.什么是僵尸进程? 二.僵尸进程带来的危害 三.如何解决僵尸进程 四.什么是孤儿进程? 一.什么是僵尸进程? 子进程先于父进程节结束,父进程没有调用wait()获取子进程的退出码,子进程此 ...

  3. Linux / 僵尸进程、孤儿进程 产生原因、有什么危害、如何预防(解决方案)

    @time 2019-07-12 @author Ruo_Xiao 一.产生原因 1.僵尸进程 子进程退出,父进程运行,父进程没有调用 wait 或者 waitpid 函数,那么子进程就处于僵尸状态( ...

  4. vmware-vmx.exe无法结束进程_孤儿进程与僵尸进程产生原理分析,以及终极解决方案案例实现...

    开发中,在io密集型的场景下,我们可以使用多进程(多线程/协成更nber)来提高任务的处理速度.这就需要主进程需要等待所有工作进程执行完毕后才可以去汇总结果后退出. 但如果不规范的编写程序,就可能导致 ...

  5. docker 容器 defunct 僵尸进程

    在构建 Docker 容器时,我们需要注意子进程的"僵尸化"问题(PID 1 Zombie Reaping Problem).这会导致不可预知的和看起来匪夷所思的问题.本文解释了这 ...

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

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

  7. 面试中常被问到的(18)父子进程,孤儿进程及僵尸进程

    并发: 单核cpu多任务,宏观同一段时间内表现出同时运行,微观上实际为时间片轮转,同一时刻只能有一个进程占据cpu资源运行,多个任务执行存在先后顺序 并行: 多核cpu多任务,严格物理意义上的同时运行 ...

  8. Linux操作系统(fork函数,task_struct内容,僵尸进程,孤儿进程,sysytemd与init)

    Linux操作系统 1. 认识fork 1.1 fork父子执行顺序,代码,和数据复制问题 1.2 为什么fork会有两个返回值?多进程怎么运行的? 1.3 为何给父进程返回pid,给子进程返回0呢? ...

  9. 一种清除windows通知区域“僵尸”图标的方案——Windows7系统解决方案

    Windows7下"僵尸"图标的解决方案 从<一种清除windows通知区域"僵尸"图标的方案--问题分析>(以后简称<问题分析>)一文 ...

最新文章

  1. 才知道创建数据表的后面int(M)的m居然和存储大小没有关系
  2. C++二维数组new小结(zz)
  3. [UE4]C++中extern关键字浅谈
  4. π!到底蕴藏了多少不为人知的秘密?|今日最佳
  5. 如何在 CentOS 中设置 NTP 服务器
  6. ubuntu下的tomcat监控脚本
  7. 玩转docker、Swarm、Kubernetes
  8. catia 桥接曲面圆角_CATIA建模教程_二_圆角及桥接在空间曲线中的应用
  9. 向量 内积 与 外积
  10. 对话旷视科技孙剑:iPhone X之外 人脸识别到底安不安全? | AI英雄
  11. 用python实现纸牌游戏的随机抽牌洗牌过程(item系列几个内置方法的实例)
  12. 计算机论文获奖证书,教改论文获奖证书-中国教育学会获奖证书评高级有用吗?...
  13. 骨传导耳机是什么意思?骨传导耳机工作原理是什么
  14. 服务器安装windows2016选择磁盘时报错不能将系统安装到此盘符
  15. 判断N维矩阵是否是Monge矩阵的Java实现
  16. 基于Java对Flash网站的抓取
  17. JSP自定义标签(一)
  18. 关于“手机”一些术语的小总结
  19. 随记1 MySQL之特殊字符(表情)的存储以及读取乱码问题
  20. 2022 年博客总结

热门文章

  1. 前端经典面试题 不经典不要star!
  2. 课时71.后代选择器(掌握)
  3. python字符串常见操作
  4. awk用法小结(作者总结)
  5. for,foreach,iterator的用法和区别
  6. sqlserver 数据库日志文件过大的问题
  7. Linq Group By 注意点
  8. 更改span标签样式_CSS 内嵌样式
  9. matlab数据游标不能使用,启用数据游标模式
  10. java21个知识点重点_java21个知识点重点