在Linux中,通过fork()函数和vfork()函数来创建一个进程。进程都是由父进程创建的,一般情况下子进程退出后需要父进程来清理子进程退出后留下的"垃圾",父进程是调用wait()或waitpid()系统调用获得的子进程的终止状态。
一、孤儿进程
1.什么是 孤儿进程
如果一个子进程的父进程先于子进程 结束, 子进程就成为一个孤儿进程,它由 init (pid=1)进程收养,成为 init 进程的子进程
孤儿进程即父进程先于子进程终止的进程,会被init接管,其父进程变为1。
孤儿进程组的概念:组中每个成员的父进程要么是该组的一个成员,要么不是该组所属会话的成员。
一个进程组不是孤儿进程组的条件:该组有一个进程,其父进程在同一会话的另一个组中。进程组不是孤儿进程组,在属于同一会话的另一个组中的父进程就有机会重启该组中停止的进程。
孤儿进程组的概念可以理解为组内所有的进程按照父子关系构建成树形结构,树根为init(1),如果组内所有进程都在此树的节点内覆盖,则说明这些进程构成孤儿进程组。
孤儿进程是没有父进程的进程,孤儿进程这个重任就落到了init进程身上,init进程就好像是一个民政局,专门负责处理孤儿进程的善后工作。每当出现一个孤儿进程的时候,内核就把孤 儿进程的父进程设置为init,而init进程会循环地wait()它的已经退出的子进程。这样,当一个孤儿进程凄凉地结束了其生命周期的时候,init进程就会代表党和政府出面处理它的一切善后工作。因此孤儿进程并不会有什么危害。
总结:
孤儿进程:一个父进程退出,而它的一个或多个子进程还在进行,那么那些子进程将成了孤儿进程,孤儿进程将被init进程(进程号为1)所收养,并由init进程对它们完成状态收集工作。僵尸资源会造成资源浪费,孤儿进程则不会。
二、什么是守护进程呢
(daemon) 指在后台运行,没有控制终端与之相连的进程。它独立于控制终端.通常周期性地执行某种任务 。
1、守护进程为什么要脱离后台去运行呢?
守护进程脱离于终端是为了避免进程在执行过程中的信息在任何终端上显示并且进程也不会被任何终端所产生的终端信息所打断
2、为什么要引入守护进程:
由于在 Linux 中,每一个系统与用户进行交流的界面称为终端,每一个从此终端开始运行的进程都会依附于这个终端,这个终端就称为这些进程的控制终端,当控制终端被关闭时,相应的进程都会自动关闭。但是守护进程却能够突破这种限制,它从被执行开始运转,直到整个系统关闭时才退出。如果想让某个进程不因为用户或终端或其他地变化而受到影响,那么就必须把这个进程变成一个守护进程。
3、守护进程的特性
1>守护进程最重要的特性是后台运行 。
2>其次,守护进程必须与其运行前的环境隔离开来。这些环境包括未关闭的文件描述符,控制终端,会话和进程组,工作目录以及文件创建掩模等。这些环境通常是守护进程从执行它的父进程(特别是 shell )中继承下来的。
3>最后,守护进程的启动方式有其特殊之处。它可以在 Linux 系统启动时从启动脚本 /etc/rc.d 中启动,可以由作业规划进程 crond 启动,还可以由用户终端(通常是 shell )执行。
4、 守护进程的启动方式有多种:
a. 它可以在 Linux 系统启动时从启动脚本 /etc/rc.d 中启动
b. 可以由作业规划进程 crond 启动;
c. 还可以由用户终端(通常是 shell )执行。
总结:
守护进程是 Linux 中的后台服务进程。它是一个生存期较长的进程,通常独立于控制终端并且周期性地执行某种任务或等待处理某些发生的事件。守护进程常常在系统引导装入时启动,在系统关闭时终止。 Linux 系统有很多守护进程,大多数服务都是通过守护进程实现的,同时,守护进程还能完成许多系统任务,例如,作业规划进程 crond 、打印进程 lqd 等(这里的结尾字母 d 就是 Daemon 的意思)。
相关推荐
本文主要给大家介绍了关于Linux中僵尸进程和孤儿进程的相关内容,分享给出来供大家参考学习,下面来看看详细的介绍: 1、僵尸进程 一个子进程在其父进程没有调用wait()或waitpid()的情况下退出,这个子进程就是僵尸...
3. **进程调度**:学习Linux内核中的调度策略,如抢占式调度和非抢占式调度,以及调度器如何根据不同的调度类和优先级来决定哪个进程应该获得CPU时间片。 4. **进程上下文**:了解进程上下文的概念,包括用户空间和...
下面是对该资源中涉及的知识点的详细解释: 查尔斯·狄更斯(Charles Dickens) 查尔斯·狄更斯(Charles Dickens)是英国小说家,生于1812年,卒于1870年。他是英国文学的代表人物之一,以其描绘英国社会的贫富...
研究结果显示,在持续表现测试(CPT)任务中,包括地震前的孤儿在内,从警惕到麻木和回避,都有认知发展阶段的证据。 与地震前的孤儿相比,地震后的孤儿仍保持高度警惕,并且在CPT任务中表现良好。 极有可能罹患...
孤儿商品管理是零售行业中一种重要的运营策略,主要针对那些出现在非正常陈列区域的商品。这些商品可能因为各种原因被顾客遗弃,如价格疑问、结账等待时间过长、条码问题或是临时改变购买决定等。有效管理孤儿商品有...
《Linux故障排除宝典教程》是一份全面深入的指南,专为解决Linux系统中的各种问题而设计。...无论你是初学者还是经验丰富的专业人士,这个教程都将提供宝贵的故障排除经验和技巧,帮助你在Linux世界中游刃有余。
- **信号处理**:讲解了Linux中信号的概念及其在进程控制中的应用。 - **僵尸进程与孤儿进程**:分析了这两种特殊类型的进程是如何产生的,并提供了相应的解决方案。 ##### 第4章:线程 - **线程概念与优势**:...
1. **Linux内核简介**:介绍Linux内核的历史、特点和作用,以及其在操作系统中的核心地位。 2. **内核结构**:详细解析内核的模块组成,如进程管理、内存管理、文件系统、网络协议栈等。 3. **进程管理**:讲述进程...
这项2019年研究的主要目的是测试改良的复杂悲伤疗法(CGT)在孤儿中治疗复杂悲伤(CG)的功效。 使用简短悲伤问卷对总共426名10至15岁的孤儿进行了筛查,以抽取悲伤评分较高的儿童。 在263名符合标准的患者中,只有...
Linux系统编程——特殊进程之孤儿进程,相关教程链接如下: http://blog.csdn.net/tennysonsky/article/details/45969569
1. **操作系统原理**:面试中可能会涉及Linux内核的工作机制,如进程调度、内存管理、文件系统等。例如,进程间通信(IPC)的方式有哪些?如何理解虚拟内存?什么是页表和页缓存? 2. **C语言编程**:C语言是Linux...
通过学习这些内容,读者不仅可以掌握Linux内核的运作原理,还能学会如何根据需求定制和改进Linux系统,提升在实际工作中的技术水平。无论是系统管理员、开发者还是研究人员,都能从中受益匪浅。
孤儿和弱势儿童(OVC)及其家庭面临许多挑战,但仍有机会为他们的社区提供照料和支持计划。 本文介绍了由世界银行资助的艾滋病项目开发项目(HPDP)在尼日利亚奥森州为OVC提供护理和支持服务的成就和意义。 作为HPDP...
【Linux进程】在Linux操作系统中,进程是程序的执行实例,是系统资源分配的基本单位。每个进程都有独立的内存空间,包含程序代码、数据、堆栈等。在Linux环境下,理解并管理进程对于系统管理员和开发者来说至关重要...
在PC中,LINUX系统启动从BIOS中的地址0xFFFF0处开始。BIOS的第一个步骤是加电自检(POST),对硬件进行检测。 POST完成后,BIOS运行时服务依然保留在内存中,目标操作系统可以使用这些服务。 启动Grub/Lilo 当POST...
在Linux操作系统中,多线程编程是一项核心技能,它允许开发者充分利用多核处理器的优势,提高程序的执行效率和响应速度。以下是对这个主题的详细解释: 1. **多线程概念**:多线程是指一个进程中可以有多个执行流,...
最新孤儿贫困申请500字贫困孤儿申请书的范文WORD范本.docx
总之,这个“Linux操作系统进程管理”课程设计将引导你进入Linux内核的世界,让你在实践中学习和掌握进程管理的精髓。这是一个挑战,但通过努力,你将收获丰富的知识和技能,为你的IT职业生涯添砖加瓦。