`
gaojingsong
  • 浏览: 1221637 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
文章分类
社区版块
存档分类
最新评论

【Linux世界中的孤儿】

阅读更多

在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 的意思)。

1
1
分享到:
评论

相关推荐

    Linux故障排除宝典教程.rar

    《Linux故障排除宝典教程》是一份全面深入的指南,专为解决Linux系统中的各种问题而设计。...无论你是初学者还是经验丰富的专业人士,这个教程都将提供宝贵的故障排除经验和技巧,帮助你在Linux世界中游刃有余。

    linux操作系统进程管理 课程设计

    总之,这个“Linux操作系统进程管理”课程设计将引导你进入Linux内核的世界,让你在实践中学习和掌握进程管理的精髓。这是一个挑战,但通过努力,你将收获丰富的知识和技能,为你的IT职业生涯添砖加瓦。

    Linux编程白皮书

    《Linux编程白皮书》是一份详尽的教程,涵盖了从Linux系统的基础到高级主题的广泛内容。...无论你是初学者还是经验丰富的开发者,这份《Linux编程白皮书》都是一个宝贵的资源,可以帮助你在Linux世界中不断探索和进步。

    linux 高级教程(内核解释)

    压缩文件中的`linux内核解释[1].part1.rar`、`linux内核解释[1].part2.rar`和`linux内核解释[1].part3.rar`很可能是书籍的分卷压缩包,需要全部下载并解压后才能获取完整的电子书内容。这三部分文件将共同构成这本书...

    centos6:在CentOS6上自动安装和配置的脚本文件,以及系统优化清理的技巧文件,只需执行即可

    在Linux世界中,CentOS 6是一个非常受欢迎的开源操作系统,尤其对于服务器管理而言。它基于Red Hat Enterprise Linux (RHEL) 的源代码,并提供了一个稳定的、企业级的计算平台。这个压缩包文件"centos6-master"似乎...

    我的APUE2读书笔记

    输入/输出操作是程序与外部世界交互的基础。Unix系统提供了多种机制来处理输入输出,如标准输入输出流、文件描述符等。 **5. 程序与进程** 进程是程序的一个运行实例,它是系统进行资源分配和调度的基本单位。每个...

Global site tag (gtag.js) - Google Analytics