zoukankan      html  css  js  c++  java
  • Linux孤儿进程与僵尸进程

    1. 基本概念:

    孤儿进程:父进程退出,但是其子进程仍然在运行,那么这些子进程被称为孤儿进程;孤儿进程会被init进程收养,并作善后处理;

    僵尸进程:一个已经终止,但是其父进程尚未对齐进行善后处理的进程被称为僵尸进程;ps命令状态为Z的进程;

    善后处理:内核为每个终止子进程保存了一定量的信息,这些信息至少包括进程ID,该进程的终止状态,以及进程使用的CPU时间总量。如果父进程没有使用wait或者waitpid获取终止子进程有关信息,这些信息将一直保存,直到父进程处理后才能释放它仍占有的资源;

    2. 有何危害:

    孤儿进程:孤儿进程会被init进程收养,并作善后处理,所以孤儿进程并没有危害;

    僵尸进程:如果父进程一直没有执行wait或者waitpid,那么内核将一直保存该子进程的状态信息,如果系统中存在大量的僵尸进程,可能导致可用进程号越来越少,甚至耗尽,所以应当避免僵尸进程的出现;

    3. 解决办法:

    (1) 父进程使用wait或者waitpid等待子进程结束;

    (2) 子进程结束的时候,会向其父进程发送SIGCHLD信号,所以,父进程可以注册SIGHLD信号处理,在处理函数中调用wait或者waitpid;

    (3) fork两次,即fork一次产生子进程,子进程再fork生成孙进程,子进程结束,主进程使用wait或者waitpid等待子进程,而孙进程在其父进程退出后,成为孤儿进程,被init收养;

    另:如果当前系统中有大量僵尸进程,则需要找到其父进程,杀死其父进程,则这些僵尸进程会被init收养并善后;

  • 相关阅读:
    Big Data 應用:第二季(4~6月)台湾地区Game APP 变动分布趋势图
    大数据应用:五大地区喜新厌旧游戏APP类别之比较与分析
    Big Data應用:以"玩家意見"之數據分析來探討何謂"健康型線上遊戲"(上)
    Example:PanGu分詞系統-批次匯入新詞
    C#数据类型02--结构
    C#数据类型01--数组
    C#基础知识点
    陌生Layout属性
    LinearLayout(线性布局)
    Android--入门常识
  • 原文地址:https://www.cnblogs.com/wanpengcoder/p/5309367.html
Copyright © 2011-2022 走看看