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

    僵尸进程与孤儿进程都是linux中的理论

    在unix/linux中,正常情况下,子进程是通过父进程创建的。子进程的结束和父进程的运行是一个异步过程,即父进程永远无法预测子进程到底什么时候结束。当一个进程完成它的工作终止之后,它的父进程需要调用wait()或者waitpid()系统调用取得子进程的终止状态

    1.孤儿进程

    一个父进程退出,而它的多个子进程还在运行,那么那些子进程将成为孤儿进程。孤儿进程将被init进程(进程号为1)所收养,并由init进程对它们完成状态收集工作

    2.僵尸进程

    一个进程使用fork创建子进程,如果子进程退出,而父进程并没有调用wait或waitpid获取子进程的状态信息,那么子进程的进程描述符仍然保存在系统中,这种进程称之为僵尸进程

    3.问题及危害

    孤儿进程会被init进程回收,因此孤儿进程并不会有什么危害。

    任何一个子进程在exit()之后,并非马上就消失掉,而是留下一个僵尸进程的数据结构。如果僵尸进程过多,他们会占用cpu及系统进程表中的资源,这样是不好的

    4.僵尸进程的解决方法

    1)毙掉产生大量僵尸进程的父进程

    2)通过信号机制

    子进程退出时向父进程发送SIGGHILD信号,父进程处理SIGGHILD信号。在信号处理函数中调用wait进程处理僵尸进程

    3)fork两次

    世界最优美的情书
  • 相关阅读:
    Linux下安装vmtools的语句
    [WP]BugkuCtf
    Linux文件属性及权限
    学习pwn的前提工作及部分解决方案
    windows环境下MySQL mysql-5.7.17-winx64 (社区服务版,community server)安装教程
    ubuntu14.04 LTS 更新国内网易163源
    session cookie
    java collection map
    重温 总结 maven几个重要概念
    java通信
  • 原文地址:https://www.cnblogs.com/xufengnian/p/10569280.html
Copyright © 2011-2022 走看看