欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

詳解Linux中的守護進程

 更新時間:2017年06月28日 10:09:55   投稿:lqh  
這篇文章主要介紹了詳解Linux中的守護進程的相關(guān)資料,需要的朋友可以參考下

一、什么是守護進程

Linux系統(tǒng)啟動時會啟動很多系統(tǒng)服務進程,這些系統(tǒng)服 務進程沒有控制終端,不能直接和用戶交互。其它進程都是在用戶登錄或運行程序時創(chuàng)建,在運⾏結(jié)束或⽤戶注銷時終止,但系統(tǒng)服務進程不受用戶登錄注銷的影響,它們⼀直在運行著。這種進程叫守護進程。

守護進程也被稱為精靈進程,是運行在后臺的一種特殊進程,它獨立于控制終端并且周期性地執(zhí)行某種任務或等待處理某些發(fā)生的事件。
查看方式

ps axj命令:查看系統(tǒng)中的進程。

參數(shù)a表示不僅列當前⽤戶的進程,也列出所有其他用戶的進程;

參數(shù)x表示不僅列有控制終端的進程,也列出所有⽆控制終端的進程;

參數(shù)j表示列出與作業(yè)控制相關(guān)的信息;

榪欓噷鍐欏浘鐗囨弿榪? title=

 二、守護進程的調(diào)用

創(chuàng)建守護進程最關(guān)鍵的⼀步是調(diào)⽤setsid函數(shù)創(chuàng)建⼀個新的會話,并成為會話leader。

該函數(shù)調(diào)用成功時返回新創(chuàng)建的Session的id(其實也就是當前進程的id),出錯返回-1。注意,調(diào)用這個函數(shù)之前,當前進程不允許是進程組的Leader,否則該函數(shù)返回-1。要保證當前進程不是進 程組的Leader也很容易,只要先fork再調(diào)⽤setsid就行了。fork創(chuàng)建的子進程和⽗進程在同⼀個進程組中,進程組的Leader必然是該組的第⼀個進程,所以子進程不可能是該組的第⼀進程,在子進程中調(diào)用setsid就不會有問題了。

成功創(chuàng)建并調(diào)用一個守護進程的標志是:

1、成功新建一個會話,當前進程成為該會話的leader,該會話的ID為當前進程的ID;

2、成功新建一個新的進程組,并且成為該組的組長,該進程組的組id即為當前進程的id;

3、如果當前進程有一個控制終端,那么當前進程失去這個控制終端,成為一個無控制終端的進程;所謂失去控制終端是指,原來的控制終端仍然是打開的,仍然可以讀寫,但只是⼀個普通的打開⽂件⽽不是控制終端了。

三、守護進程的創(chuàng)建

1、使用umask將文件模式創(chuàng)建屏蔽字設置為0;

2、調(diào)用fork(),父進程退出(exit)。 (如果該守護進程作為一條簡單的shell命令啟動的,那么父進程終止使得shell認為該命令已經(jīng)執(zhí)行完畢。同時保證該進程不是一個進程組的組長進程)

3、調(diào)用setsid創(chuàng)建一個新會話。(setsid會使1、調(diào)用進程成為新會話的首進程;2、調(diào)用進程成為一個進程組的組長進程;3、調(diào)用進程沒有控制終端)

4、將當前工作目錄更改為根目錄;

5、關(guān)閉不再需要的文件描述符;

6、忽略SIGCHLD信號;

代碼實現(xiàn)mydemon:

榪欓噷鍐欏浘鐗囨弿榪? title=

榪欓噷鍐欏浘鐗囨弿榪? title=

榪欓噷鍐欏浘鐗囨弿榪? title=

除了自己實現(xiàn)外,我們還可以調(diào)用系統(tǒng)中的demon進行設置;

進行第二次fork的原因?

要明晰第二次fork的原因,就必須明晰這兩次fork的作用。

第一次fork的作用是:1、讓shell認為這條命令已經(jīng)終止,不用掛在終端輸入上;

2、為之后的setsid服務,因為調(diào)用setsid函數(shù)的進程不能是進程組組長,如果不fork出子進程,則此時的父進程是進程組組長,就無法調(diào)用setsid。(當子進程調(diào)用完setsid函數(shù)之后,子進程是會話組長也是進程組組長,并且脫離了控制終端,此時,不管控制終端如何操作,新的進程都不會收到一些信號使得進程退出。)

(2)第二次fork的作用:

雖然當前關(guān)閉了和終端的聯(lián)系,但是后期可能會誤操作打開了終端。只有確定會話首進程能打開終端設備,也就是再fork一次,再把父進程退出,再次fork的子進程作為守護進程繼續(xù)運行,保證了該精靈進程不是對話期的首進程。

第二次不是必須的,是可選的,市面上有些開源項目也是fork一次

感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!

相關(guān)文章

最新評論