zoukankan      html  css  js  c++  java
  • 记录一次僵尸进程


    直接出现僵尸进程 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后在处理

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

  • 相关阅读:
    SQL Server 的事务和锁 图解
    pxc 集群
    Supported_Hardware#4G_LTE_cards_and_modems
    手机性能天梯图
    无线上网卡制式
    python源码学习
    SQLSERVER里面RR隔离级别没有GAP锁
    JAVA EE 博客实例
    REDIS 配制
    SQL SERVER 函数与SQL语法
  • 原文地址:https://www.cnblogs.com/codestack/p/13705849.html
Copyright © 2011-2022 走看看