记录一次僵尸进程


直接出现僵尸进程 77个
瞬间傻逼了, 这是多么奇葩!!
赶紧看下 这些进程是啥
ps -elf |grep Z 查看

发现没---都是同一个, 其父进程也是同一个。
在回想一下 僵尸进程怎么产生的----- 进程退出的时候,其资源没有被回收,也就是 其task_struct资源没有被销毁。进程处理Z 状态。
所以此时 发出kill 信号肯定是没用的。
那怎么处理呢??
我们在想一想,防止出现僵尸进程的方法,

1、父进程使用wait()或者waitpid()之类的函数等待子进程退出 /使用信号函数sigaction为SIGCHLD设置wait处理函数

2、设置SIGCHLD信号为SIG_IGN(即,忽略SIGHLD信号),系统将不产生僵尸进程,

3、孤儿进程,是init进程接管孤儿进程

所以解决办法就是: 将这些僵死进程的父进程 给kill掉 让init进程来回收资源

kill -9 3468 后
top 可以看到 僵尸进程位0
同时 此时代码需要处理.将进程多次fork后在处理

留下一个问题: 为什么父进程没有回收子进程???

posted @   codestacklinuxer  阅读(164)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
阅读排行:
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!
点击右上角即可分享
微信分享提示