僵尸进程和孤儿进程 转载

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

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

https://blog.csdn.net/qq_41672715/article/details/79328061

原文地址:https://www.cnblogs.com/lukechenblogs/p/8675655.html

时间: 2024-10-03 23:04:30

僵尸进程和孤儿进程 转载的相关文章

【转】僵尸进程和孤儿进程

之前写了进程的创建,由于是半年前做的题目了,现在回忆有点生疏,有些概念都忘了,比如僵尸进程.孤儿进程.子进程和父进程的关系...在博客园看到有一篇讲的很好的关于僵尸进程和孤儿进程的文章,没看到有转载的选项,直接复制过来了,方便以后忘了再查看 转自http://www.cnblogs.com/Anker/p/3271773.html 1.前言 之前在看<unix环境高级编程>第八章进程时候,提到孤儿进程和僵尸进程,一直对这两个概念比较模糊.今天被人问到什么是孤儿进程和僵尸进程,会带来什么问题,怎

(转)进程间关系:进程、僵尸进程、孤儿进程、进程组、前台进程组、后台进程组、孤儿进程组、会话、控制终端

不同的shell对使用管道线时创建子进程的顺序不同,本文以bash为例,它是支持作业控制的shell的典型代表. 僵尸进程与孤儿进程 僵尸进程:先于父进程终止,但是父进程没有对其进行善后处理(获取终止子进程有关信息,释放它仍占有的资源).消灭僵尸进程的唯一方法是终止其父进程.孤儿进程:该进程的父进程先于自身终止.其特点是PPID=1(init进程的ID).一个孤儿进程可以自成孤儿进程组. 文中用到的缩写 PID = 进程ID (由内核根据延迟重用算法生成)PPID = 父进程ID(只能由内核修改

Linux中的僵尸进程和孤儿进程

在UNIX里,除了进程0(即PID=0的交换进程,Swapper Process)以外的所有进程都是由其他进程使用系统调用fork创建的,这里调用fork创建新进程的进程即为父进程,而相对应的为其创建出的进程则为子进程,因而除了进程0以外的进程都只有一个父进程,但一个进程可以有多个子进程.        操作系统内核以进程标识符(Process Identifier,即PID)来识别进程.进程0是系统引导时创建的一个特殊进程,在其调用fork创建出一个子进程(即PID=1的进程1,又称init)

僵尸进程和孤儿进程----概念

这里仅给出僵尸进程和孤儿进程的概念.来源<深入了解计算机系统(原书第3版)>和网上的博客,下面会给出博客来源. 前言:回收子进程 当一个进程由于某种原因终止时,内核并不是立即把它从系统中清除.相反,进程被保持在一种已终止的状态中,直到被它的父进程回收(reaped).当父进程回收已终止的子进程时,内核将子进程的退出状态传递给父进程,然后抛弃已终止的进程.从此时开始,该进程就不存在了. 1.基本概念 僵尸进程:一个进程使用fork创建子进程,如果子进程退出,而父进程并没有调用wait或waitp

僵尸进程和孤儿进程

僵尸进程:一个子进程死亡了,但是它的父进程并没有调用wait或waitpid进行状态收集,关于这个进程的描述符还存在系统中,这个子进程就死不瞑目,就成了僵尸进程. 孤儿进程:顾名思义,就是没有父进程的进程.在OS中,一个父进程死亡,它的那些还在运行的子进程就成为孤儿进程.孤儿进程会被init进程(pid=1)所收养,并且由init进程完成它们的状态收集工作. 需要了解的是,在OS中,每个进程都有一个关于本身的进程描述符,当这个进程消亡之后,这个描述符是不会消失的,这个描述符是父进程用来查看子进程

Linux下的僵尸进程和孤儿进程

说明 在UNIX里,除了进程0(即PID=0的交换进程,Swapper Process)以外的所有进程都是由其他进程使用系统调用fork创建的,这里调用fork创建新进程的进程即为父进程,而相对应的为其创建出的进程则为子进程,因而除了进程0以外的进程都只有一个父进程,但一个进程可以有多个子进程. 操作系统内核以进程标识符(Process Identifier,即PID)来识别进程.进程0是系统引导时创建的一个特殊进程,在其调用fork创建出一个子进程(即PID=1的进程1,又称init)后,进程

Linux-进程描述(3)之进程状态僵尸进程与孤儿进程

进程状态 进程状态反映进程执行过程的变化.这些状态随着进程的执行和外界条件的变化而转换.为了弄明正正在运行的进程是什么意思,我们需要知道进程的不同状态.一个进程可以有多个状态(在Linux内核中,进程有时候也叫做任务).下面的状态在 fs/proc/array.c 文件中定义: /* * The task state array is a strange "bitmap" of * reasons to sleep. Thus "running" is zero,

linux的僵尸进程和孤儿进程

1 僵尸进程: 子进程已经退出勒 但是还没有回收资源的进程为僵尸进程 代码验证 1 #include <stdio.h> 2 #include <stdlib.h> 3 #include <unistd.h> 4 5 int main() 6 { 7 pid_t pid; 8 if((pid=fork())==-1) 9 { 10 perror("fork error"); 11 12 }else if(pid==0){ 13 printf(&quo

zombie僵尸进程、孤儿进程和守护进程

以前一直对僵尸进程和孤儿进程都没怎么理解,真是罪过,最近在看liunx编程设计(第四版),看到了他们的概念,所以对它们做个总结!加深印象. 基本概念: 我们知道在unix/linux中,正常情况下,子进程是通过父进程创建的,子进程再创建新的进程.子进程的结束和父进程的运行是一个异步过程,即父进程永远无法预测子进程 到底什么时候结束. 当一个 进程完成它的工作终止之后,它的父进程需要调用wait()或者waitpid()系统调用取得子进程的终止状态. 但是如果情况不是这样的会怎么样呢,毕竟世事难料