fbpx
维基百科

孤儿进程

操作系统领域中,孤儿进程(Orphan Process)指的是在其父进程执行完成或被终止英语exit (operating system)后仍继续运行的一类进程

解决办法

“收养”

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

进程组

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

远程调用的情况

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

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

“孤儿进程”的应用

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

参见

参考

  1. ^ Robert Love. Linux Kernel Development. Novell Press. 2005. 
  2. ^ GNU C Library Manual. GNU Project. [2012-12-30]. (原始内容于2012-12-25).  |chapter=被忽略 (帮助)
  3. ^ Er. Vivek Sharma, Er. Manish Varshney, Shantanu Sharma. Design and Implementation of Operating System. Laxmi Publication Pvt. Ltd. 
  4. ^ 杜华. 8.2.1 实现守护进程的步骤. Linux编程技术详解. 人民邮电出版社. 2007. 
  5. ^ nohup(1) - Linux man page. [2012-12-30]. (原始内容于2013-01-03). 

孤儿进程, 在操作系统领域中, orphan, process, 指的是在其父进程执行完成或被终止, 英语, exit, operating, system, 后仍继续运行的一类进程, 目录, 解决办法, 收养, 进程组, 远程调用的情况, 的应用, 参见, 参考解决办法, 编辑, 收养, 编辑, 参见, 父进程, 在类unix操作系统中, 为避免退出时无法释放所占用的资源而僵死, 任何产生时都会立即为系统进程init或systemd自动接收为子进程, 这一过程也被称为, 收养, 英語, parenting, 在此. 在操作系统领域中 孤儿进程 Orphan Process 指的是在其父进程执行完成或被终止 英语 exit operating system 后仍继续运行的一类进程 目录 1 解决办法 1 1 收养 1 2 进程组 1 3 远程调用的情况 2 孤儿进程 的应用 3 参见 4 参考解决办法 编辑 收养 编辑 参见 父进程 在类UNIX操作系统中 为避免孤儿进程退出时无法释放所占用的资源而僵死 任何孤儿进程产生时都会立即为系统进程init或systemd自动接收为子进程 这一过程也被称为 收养 英語 re parenting 1 在此需注意 虽然事实上该进程已有init作为其父进程 但由于创建该进程的进程已不存在 所以仍应称之为 孤儿进程 进程组 编辑 因为父进程终止或崩溃都会导致对应子进程成为孤儿进程 所以也无法预料一个子进程执行期间是否会被 遗弃 有鉴于此 多数类UNIX系统都引入了进程组以防止产生孤儿进程 在父进程终止后 用户的Shell会将父进程所在进程组标为 孤儿进程组 并向终止的进程下属所有子进程发出SIGHUP信号 以试图结束其运行 如此避免子进程继续以 孤儿进程 的身份运行 2 远程调用的情况 编辑 遠程過程調用过程中也会产生孤儿进程 例如 若客户端进程在发起请求后突然崩溃 且对应的服务器端进程仍在运行 则该服务器端进程就会成为孤儿进程 这样的孤儿进程会浪费服务器的资源 甚至有耗尽资源的潜在危险 但也有对应的解决办法 3 终止机制 强制杀死孤儿进程 最常用的手段 再生机制 服务器在指定时间内查找调用的客户端 若找不到则直接杀死孤儿进程 超时机制 给每个进程指定一个确定的运行时间 若超时仍未完成则强制终止之 若有需要 亦可让进程在指定时间耗尽之前申请延时 孤儿进程 的应用 编辑除此之外 用户也可能会刻意使进程成为孤儿进程 以使之与用户会话脱钩 并转至后台运行 这一做法常应用于启动需要长时间运行的进程 也即守护进程 4 另外 UNIX命令nohup也可以完成这一操作 5 参见 编辑僵尸进程 守护进程参考 编辑 Robert Love Linux Kernel Development Novell Press 2005 GNU C Library Manual GNU Project 2012 12 30 原始内容存档于2012 12 25 chapter 被忽略 帮助 Er Vivek Sharma Er Manish Varshney Shantanu Sharma Design and Implementation of Operating System Laxmi Publication Pvt Ltd 杜华 8 2 1 实现守护进程的步骤 Linux编程技术详解 人民邮电出版社 2007 nohup 1 Linux man page 2012 12 30 原始内容存档于2013 01 03 取自 https zh wikipedia org w index php title 孤儿进程 amp oldid 75659029, 维基百科,wiki,书籍,书籍,图书馆,

文章

,阅读,下载,免费,免费下载,mp3,视频,mp4,3gp, jpg,jpeg,gif,png,图片,音乐,歌曲,电影,书籍,游戏,游戏。