APUE筆記 第十三章 精靈程序

2021-10-19 16:05:50 字數 891 閱讀 1604

精靈程序(daemon)是生存期長的一種程序。它們常常在系統引導裝入時起動,在系統關閉時終止。因為它們沒有控制終端,所以說它們是在後台執行的。unix系統有很多精靈程序,它們執行日常事物活動。所有精靈程序都以超級使用者(使用者id為0)的優先權執行。沒有乙個精靈程序具有控制終端—終端名稱設定為問號(?)、終端前台程序組id設定為-1。

(1) 首先做的是呼叫fork,然後使父程序exit。這樣做實現了下面幾點:第一,如果該精靈程序是由一條簡單shell命令起動的,那麼使父程序終止使得shell認為這條命令已經執行完成。第二,子程序繼承了父程序的程序組id,但具有乙個新的程序id,這就保證了子程序不是乙個程序組的首程序。這對於下面就要做的setsid呼叫是必要的前提條件。

(2) 呼叫setsid以建立乙個新對話期。於是執行下圖中列舉的三個操作,使呼叫程序:(a)成為新對話期的首程序,(b)成為乙個新程序組的首程序,(c)沒有控制終端。

(3) 將當前工作目錄更改為根目錄。從父程序繼承過來的當前工作目錄可能在乙個裝配的檔案系統中。因為精靈程序通常在系統再引導之前是一直存在的,所以如果精靈程序的當前工作目錄在乙個裝配檔案系統中,那麼該檔案系統就不能被拆卸。另外,某些精靈程序可能會把當前工作目錄更改到某個指定位置,在此位置做它們的工作。

(4) 將檔案方式建立遮蔽字設定為0。由繼承得來的檔案方式建立遮蔽字可能會拒絕設定某些許可權。例如,若精靈程序要建立乙個組可讀、寫的檔案,而繼承的檔案方式建立遮蔽字,遮蔽了這兩種許可權,則所要求的組可讀、寫就不能起作用。

(5) 關閉不再需要的檔案描述符。這樣使精靈程序就不再持有從其父程序繼承來的某些檔案描述符(父程序可能是shell程序,或某個其他程序)。但是,究竟關閉哪些描述符則與具體的精靈程序有關。

APUE讀書筆記 第十三章 守護程序

使用者層守護程序的父程序是init程序 守護程序編寫規則 1 umask將檔案模式建立遮蔽字設定為乙個已知值 通常為0 2 呼叫fork,然後使父程序exit,保證了子程序不是乙個程序組的組長程序 3 呼叫setsid建立乙個新會話,由於該程序不是乙個程序組的組長程序,會發生以下三件事 a 該程序變...

C Primer Plus 第十三章筆記

1.使用公有派生,基類的公有成員將成為派生類的共有成員 基類的私有部分也將成為派生類的一部分,但只能通過基類的公有和保護方法訪問。2.派生類建構函式必須使用基類建構函式,意味著基類物件應當在程式進入派生類建構函式之前被建立。如果不呼叫基類建構函式,程式將使用預設的基類建構函式。3.可將派生類物件和位...

20191302第十三章筆記

第二部分介紹了web和cgi程式設計,解釋了http程式設計模型 web頁面和web瀏覽器 ip位址分為兩部分,即networkid欄位和hostid欄位。根據劃分,ip位址分為a f類。例如,乙個b類ip位址被劃分為乙個16位networkid,其中前2位是10,然後是乙個16位的hostid欄位...