僵尸进程以及如何处理
僵尸进程:当前进程已退出,但是由于内核中仍保存其进程状态信息,由于父进程未对其进行回收,使其一直留在操作系统中,占用系统资源,其在进程表中的状态为Z。
出现原因:一般来说,父进程需要追踪子进程的退出状态,因此当子进程结束运行后,内核不会立即释放该进程的进程表表项,以满足父进程后续对子进程退出信息的查询。
造成影响:占据内核资源
解决方案:父进程调用wait() 以及 waitpid()来实现对子进程状态信息的回收
//记住kill()是发送信号
两者区别:wait只有阻塞性质的,他是等待当前进程的某个子进程结束,waitpid有个option参数可以设置WNOHANG,可以将其设置为非阻塞;
扩展:如何通知进程使其回收子进程信息,使其不让它成为僵尸进程:
可以通过在父进程捕获信号,SIGCHLD信号:当一个进程结束的时候,它将给其父进程发送一个SIGCHLD信号,通过在父进程捕获SIGCHLD信号,并在信号处理函数中调用waitpid函数以“彻底结束”一个子进程
僵尸进程以及如何处理相关推荐
- linux产生的僵尸进程如何处理
linux产生的僵尸进程如何处理 ps -A -ostat,ppid,pid,cmd | grep -e '^[Zz]' 命令注解: -A 参数列出所有进程 -o 自定义输出字段,我们设定显示字段为s ...
- Linux如何处理僵尸进程
目录 (一)什么是僵尸进程 (二)僵尸进程目的 (三)僵尸进程的处理 1.wait()函数 2.waitpid()函数 3.wait与waitpid区别 (四)僵尸进程的避免 (一)什么是僵尸进程 ...
- docker 容器 defunct 僵尸进程
在构建 Docker 容器时,我们需要注意子进程的"僵尸化"问题(PID 1 Zombie Reaping Problem).这会导致不可预知的和看起来匪夷所思的问题.本文解释了这 ...
- Linux 僵尸进程
Linux 允许进程查询内核以获得其父进程的 PID,或者其任何子进程的执行状态.例如,进程可以创建一个子进程来执行特定的任务,然后调用诸如 wait() 这样的一些库函数检查子进程是否终止.如果子进 ...
- java 僵尸进程_Linux 僵尸进程
Linux 允许进程查询内核以获得其父进程的 PID,或者其任何子进程的执行状态.例如,进程可以创建一个子进程来执行特定的任务,然后调用诸如 wait() 这样的一些库函数检查子进程是否终止.如果子进 ...
- Z(zombie)僵尸进程和孤儿进程
僵尸进程 1.什么是僵尸进程? (1) 僵死状态是一个比较特殊的状态,当子进程退出但父进程没有读取到子进程退出返回的代码时就会产生僵死状态,僵死进程会占用你的正常资源 (2)僵死进程会以终止状态保持在 ...
- 在docker中出现的僵尸进程怎么处理
GreatSQL社区原创内容未经授权不得随意使用,转载请联系小编并注明来源. 一.发现问题 小玲是一名数据库测试人员,这一天她尝试在docker环境中部署GreatDB集群,结果在对greatsqld ...
- 僵尸进程是什么,如果产生一个僵尸进程,如何查找僵尸进程
僵尸进程是当子进程比父进程先结束,而父进程又没有回收子进程,释放子进程占用的资源,此时子进程将成为一个僵尸进程.如果父进程先退出 ,子进程被init接管,子进程退出后init会回收其占用的相关资源. ...
- 子进程、僵尸进程、孤儿进程(个人总结)
声明: 1. 本文为我的个人复习总结, 并非那种从零基础开始普及知识 内容详细全面, 言辞官方的文章 2. 由于是个人总结, 所以用最精简的话语来写文章 ...
最新文章
- CCNA战报每日更新
- 实操|如何将 Containerd 用作 Kubernetes runtime
- 利用Word2010给汉字添加汉语拼音
- c语言for要分号错误,c语言for语句
- 装饰器模式(讲解+应用)
- 前端学习(2242)以组件方式创建UI
- sql server 配置管理器里为什么是32位_Windows Server2012 配置打印服务器图文教程
- 将xml文件打包进dll(或exe)
- 使用JAXB实现JAVA对象和XML字符串的互相转换
- 洛谷P4238 多项式乘法逆元
- 【iOS沉思录】Objective-C语言的动态性总结(编译时与运行时)
- 敏捷实践之回顾会议Retro
- HMM隐马尔可夫模型解决的问题及推导过程
- 茅台与小米搞饥饿营销?
- 漫话:如何给女朋友解释为什么日本时间比中国时间快一个小时
- 【Qt学习】04 信号-槽 子窗口向主窗口传递参数
- C++笔记005:用面向过程和面向对象方法求解圆形面积
- 几行代码瞬间卡死电脑
- 如何用数字示波器测量晶振的频率
- 关于日历实现代码里0x04bd8, 0x04ae0, 0x0a570的说明