孤儿进程 目录 解决办法 “孤儿进程”的应用 参见 参考 导航菜单GNU C Library ManualDesign and Implementation of Operating Systemnohup(1) - Linux man page

操作系统进程Unix


父进程进程类UNIX操作系统initsystemd进程组SIGHUPRPC守护进程





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




目录





  • 1 解决办法

    • 1.1 “收养”


    • 1.2 进程组


    • 1.3 远程调用的情况



  • 2 “孤儿进程”的应用


  • 3 参见


  • 4 参考




解决办法



“收养”



在类UNIX操作系统中,为避免孤儿进程退出时无法释放所占用的资源而僵死,任何孤儿进程产生时都会立即为系统进程init或systemd自动接收为子进程,这一过程也被称为“收养”(英语: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. ^ GNU C Library Manual. GNU Project.  |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. 







Popular posts from this blog

瀋陽號驅逐艦 目录 接收與服役 配置反潛直升機 武進三型性能升級 歷史 除役 參考資料 外部連結 导航菜单Taiwan Air Power海疆老兵-陽字號驅逐艦沿革World Navies Today: Taiwan (Republic of China)DD-839 USS POWER

Memorizing the KeyboardThe Norwegian Foreman''If the B…''The Consonant EaterThe Cherry TreeElle Rend Le Coeur Plus AmoureuxFill in the blanks with the number in wordsState of the UnionFind the missing elementsCircuit DiagramWhat's the name of the game show?

名間水力發電廠 目录 沿革 設施 鄰近設施 註釋 外部連結 导航菜单23°50′10″N 120°42′41″E / 23.83611°N 120.71139°E / 23.83611; 120.7113923°50′10″N 120°42′41″E / 23.83611°N 120.71139°E / 23.83611; 120.71139計畫概要原始内容臺灣第一座BOT 模式開發的水力發電廠-名間水力電廠名間水力發電廠 水利署首件BOT案原始内容《小檔案》名間電廠 首座BOT水力發電廠原始内容名間電廠BOT - 經濟部水利署中區水資源局