D.91234.com

Base Www Romancebase.com Romance Base 孤儿进程 - 维基百科,自由的百科全书

Base Www Romancebase.com Romance Base

Romancebase.com Www Romancebase.com Romancebase.com search Romancebase.com
Romancebase.com search Romancebase.com Base searchsearch Romancebase.com Romancebase.com Base Www search Base Base Base search Www search Www

Romancebase.com searchsearch Base search Www Romancebase.com Www search孤儿进程指的是在其父进程执行完成或被终止英语exit (operating system)后仍继续运行的一类进程

目录

解决办法[编辑]

“收养”[编辑]

参见:父进程

类UNIX操作系统中,为避免孤儿进程退出时无法释放所占用的资源而僵死,任何孤儿进程产生时都会立即为系统进程init自动接收为子进程,这一过程也被称为“收养”(英语re-parenting[1]。在此需注意,虽然事实上该进程已有init作为其父进程,但由于创建该进程的进程已不存在,所以仍应称之为“孤儿进程”。

进程组[编辑]

因为父进程终止或崩溃都会导致对应子进程成为孤儿进程,所以也无法预料一个子进程执行期间是否会被“遗弃”。有鉴于此,多数类UNIX系统都引入了进程组以防止产生孤儿进程:在父进程终止后,用户的Shell会将父进程所在进程组标为“孤儿进程组”,并向终止的进程下属所有子进程发出SIGHUP信号,以试图结束其运行,如此避免子进程继续以“孤儿进程”的身份运行[2]

远程调用的情况[编辑]

RPC过程中也会产生孤儿进程。例如,若客户端进程在发起请求后突然崩溃,且对应的服务器端进程仍在运行,则该服务器端进程就会成为孤儿进程。这样的孤儿进程会浪费服务器的资源,甚至有耗尽资源的潜在危险,但也有对应的解决办法[3]

  1. 终止机制:强制杀死孤儿进程(最常用的手段);
  2. 再生机制:服务器在指定时间内查找调用的客户端,若找不到则直接杀死孤儿进程;
  3. 超时机制:给每个进程指定一个确定的运行时间,若超时仍未完成则强制终止之。若有需要,亦可让进程在指定时间耗尽之前申请延时。

“孤儿进程”的应用[编辑]

除此之外,用户也可能会刻意使进程成为孤儿进程,以使之与用户会话脱钩,并转至后台运行。这一做法常应用于启动需要长时间运行的进程,也即守护进程[4]。另外,UNIX命令nohup英语nohup也可以完成这一操作[5]

参见[编辑]

参考[编辑]

  1. ^ Robert Love. Linux Kernel Development. Novell Press. 
  2. ^ Orphaned Process Groups. GNU C Library Manual. GNU Project. 
  3. ^ cBase Www Romancebase.com Romance Base 孤儿进程 - 维基百科,自由的百科全书y j Passion zBase Www Romancebase.com Romance Base 孤儿进程 - 维基百科,自由的百科全书n v Video