孤儿进程 && 僵尸进程

background:

unix:

每个子进程退出,内核释放该进程所有资源,打开的文件,占用的内存

保留的信息:the process ID,the termination status of the process,the amount of CPU time taken by the process

父进程用wait()/waitpid()释放子进程的保留信息

父进程不调用wait()/waitpid()进程号一直被占用,系统所能提供的进程号有限,没有可用的进程号导致系统不能产生新的进程

Zombie 僵尸进程

一个进程fork()创建了子进程,子进程退出,父进程没有调用wait()/waitpid()释放子进程的保留信息,子进程的进程描述仍保存在系统中,进程号仍被占用

Orphan 孤儿进程

父进程退出,他的一个或多个子进程还在运行,子进程成为孤儿进程。孤儿进程将被init进程收养,init进程对他们完成状态收集,释放子进程的状态描述,主要是进程号

时间: 2024-10-24 10:07:43

孤儿进程 && 僵尸进程的相关文章

第7章 进程关系(1)_守护、孤儿和僵尸进程

1. 守护.孤儿和僵尸进程 (1)守护进程 ①守护进程(daemon)是生存期长的一种进程.它们常常在系统引导装入时启动,在系统关闭时终止. ②所有守护进程都以超级用户(用户ID为0)的优先权运行. ③守护进程没有控制终端 ④守护进程的父进程都是init进程(1号进程). (2)孤儿进程:父进程先结束,子进程就成为孤儿进程,会由1号进程(init进程)领养. [编程实验]产生孤儿进程 //process_orphen.c #include <unistd.h> #include <std

浅析三种特殊进程:孤儿进程,僵尸进程和守护进程.

其实有时想想linux内核的设计也蕴含着很多人生哲学,在linux中有这么几个特殊进程中,我们一开始见到它们的名字可能还会觉得很诧异,但在了解完了原理后,我们仔细想想,这样的命名也不无道理!下面我就给大家分别介绍一下这三种特殊的进程! 1.孤儿进程 如果父进程先退出,子进程还没退出那么子进程将被 托孤给init进程,这是子进程的父进程就是init进程(1号进程).其实还是很好理解的. #include <sys/types.h> #include <unistd.h> #inclu

菜鸟随笔(3)---三种进程学习.孤儿进程.僵尸进程.守护进程

一只菜鸟横空出世,码农世界闯一闯,每天进展多一丢丢. 三种进程学习.孤儿进程.僵尸进程.守护进程 转自https://blog.csdn.net/believe_s/article/details/77040494 1.孤儿进程 如果父进程先退出,子进程还没退出那么子进程将被 托孤给init进程,这里子进程的父进程就是init进程(1号进程).其实还是很好理解的. // 父进程先子进程退出 // 子进程会被祖父进程接手并在后台运行,执行内部的代码 int main() { pid_t pid =

【Linux】孤儿进程&amp;僵尸进程

孤儿进程 父进程先死,子进程托孤给一号进程 #include <stdio.h> #include <stdlib.h> #include <unistd.h> int main(void) { pid_t pid; pid = fork(); if(-1 == pid) { return 0; } if(0 == pid) { sleep(100); } if(pid > 0) { ; } return 0; } 僵死进程 子进程先死,父进程还没有来得及收尸 #

孤儿进程和僵尸进程

孤儿进程和僵尸进程 一.定义:什么是孤儿进程和僵尸进程 僵尸进程:一个子进程在其父进程还没有调用wait()或waitpid()的情况下退出.这个子进程就是僵尸进程. 孤儿进程:一个父进程退出,而它的一个或多个子进程还在运行,那么那些子进程将成为孤儿进程.孤儿进程将被init进程(进程号为1)所收养,并由init进程对它们完成状态收集工作. 僵尸进程将会导致资源浪费,而孤儿则不会. 子进程持续10秒钟的僵尸状态(EXIT_ZOMBIE)------------------------------

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

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

fork()函数的执行过程、孤儿进程和僵尸进程

说起fork就不得不提COW(Copy On Write),就是"写时拷贝".也就是当fork发生时,子进程根本不会去拷贝父进程的内存页面,而是与父进程共享.当子进程或父进程需要修改一个内存页面时,Linux就将这个内存页面复制一份给修改者,然后再去修改,这样从用户的角度看,父子进程根本就没有共享什么内存.COW也就是进程要写共享的内存页面,先复制再改写. 采用了COW技术后,fork时,子进程还需要拷贝父进程的页面表.这种拷贝的代价就非常小了,对于CPU来说用不了几个时钟周期. 1.

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

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

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

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