孤儿进程与僵尸进程
2016-03-23 00:35
218 查看
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收养并善后;
孤儿进程:父进程退出,但是其子进程仍然在运行,那么这些子进程被称为孤儿进程;孤儿进程会被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收养并善后;
相关文章推荐
- ubuntu安装中文字符支持
- 南阳题目96-n-1位数
- Modular multiplicative inverse 模逆元
- 数的同构 检测程序 为什么会花这么多时间???
- Linux wget命令详解
- Ubuntu 使用技巧
- 1004贪心算法acm
- OSChina 周三乱弹 ——大变魔术啦,汪星人秒变熊孩子
- 【枚举】Vijos P1496 火柴棒等式 (NOIP2008提高组第二题)
- I/O Multiplexing & epoll
- 一个简单的自定义popupwindow
- 8.configurable product
- [leetcode] p338 Count Bits
- 【枚举】Vijos P1496 火柴棒等式 【NOIP2008提高组第二题】
- SVM-4-核函数
- mysql索引失效的几种情况
- DroidPlugin代码分析(二) Hook机制
- 前路漫漫,还是先清醒清醒
- 清除WebSphere部署应用所对应的JSP缓存
- oc-17-description