編寫守護程序需要遵循的基本規則

2021-09-21 18:01:31 字數 743 閱讀 2733

一、首先要呼叫umask將檔案模式建立遮蔽字設定為乙個已知值(通常是0)。由繼承的來的檔案模式建立遮蔽字可能會被設定為拒絕某些許可權。如果守護程序要建立檔案,那麼它可能要設定的特定的許可權

二、呼叫fork,然後使父程序exit。這樣做實現了下面幾點了第一,如果該守護程序是作為一條簡單的shell命令啟動的,那麼父程序終止會讓shell認為這條命令已經執行完畢。第二,銳然子程序繼承了父程序的程序組id,但獲得了乙個新的程序id,這就保證了子程序不是乙個程序組的組長程序。

三、呼叫setsid建立乙個新會話。使呼叫程序:(a)成為新會話的首程序,(b)成為乙個新程序組的組長程序,(c)沒有控制終端。

四、將當前工作目錄更改為跟目錄。從父程序處繼承過來的當前工作目錄可能在乙個掛載的檔案系統中。因為守護程序通常在系統再引導之前是一直存在的,所以如果守護程序的當前工作目錄在乙個掛載的檔案系統中,那麼該檔案系統就不能被解除安裝。

五、關閉不需要的檔案描述符。這使守護程序不再持有從父程序繼承來的任何檔案描述符(父程序可能是shell程序,或某個其他程序)。

六、某些守護程序開啟/dev/null使其具有檔案描述符0、1和2,這樣,任何乙個試圖讀標準輸入、寫標準輸出或標準錯誤的庫例程都不會產生任何效果。因為守護程序並不與終端裝置相關聯,所以其輸出無處顯示,也無處從互動式使用者那裡接受輸入。即使守護程序是從互動式會話啟動的,但是守護程序是在後台執行的,所以登陸會話的終止並不影響守護程序。如果其他使用者在同一終端裝置上登陸,我們不希望在該終端上見到守護程序的輸出,使用者也不期望他們在終端上的輸入被守護程序讀取。

守護程序的程式設計規則

要理解守護程序的程式設計規則必須先搞明白程序組 會話 組長程序等關係。1.程序組 每個程序除了有乙個程序id之外,還屬於乙個程序組。程序組是乙個或者多個程序的集合。每個程序組都有乙個組長程序。組長程序的標識是,其程序id和程序組id相等。2.會話 會話是乙個或者多個程序組的集合。程序可以呼叫sets...

Linux程序與守護程序的編寫試驗

1 編寫乙個程式建立乙個子程序,父程序隨後掛起,子程序迴圈列印自己的程序號和父程序號,並對比ps查詢到的程序號。2 編寫乙個程式建立n個子程序p1,p2,p3 pn,其中n由鍵盤輸入,p i 是p i 1 的父程序,列印每個程序的程序號,父程序號和子程序號。3 編寫乙個程式建立n個子程序p1,p2,...

linux上編寫守護程序的例程

linux上編寫守護程序的例程 摘自 開放系統世界 2004年第5 期郭吉平 任蓮的文章 親自動手編寫守護程序 郭吉平 任蓮 親自動手編寫守護程序 include include include void main int argc,char argv 守護程序在 linux unix 系統中有著廣...