APUE讀書筆記-第13章-守護進程

第13章 守護進程

13.1 引言

*守護進程也稱精靈進程(daemon)是生存期較長的一種進程。它們常常在系統自舉時啓動,僅在系統關閉時才終止。因爲它們沒有控制終端,所以說它們是在後臺運行的。UNIX系統有很多守護進程,它們執行日常事務活動


13.2 守護進程的特徵

*系統進程依賴於操作系統實現。父進程ID爲0的各進程通常是內核進程,它們作爲系統自舉過程的一部分而啓動。(init是此種進程的例外,它是內核在自舉時啓動的用戶層命令。)內核進程是特殊的,通常存在於系統的整個生命期中。它們以超級用戶特權運行,無控制終端,無命令行


13.3 編程規則

*(1)首先要做的是調用umask將文件模式創建屏蔽字設置爲0

(2)調用fork,然後使父進程退出(exit)

(3)調用setsid以創建一個新會話

(4)將當前工作目錄更改爲根目錄

(5)關閉不再需要的文件描述符

(6)某些守護進程打開/dev/null使其具有文件描述符0、1和2,這樣,任何一個試圖讀標準輸入、寫標準輸出或標準出錯的庫例程都不會產生任何效果


13.4 出錯記錄

*有三種方法產生日誌消息

(1)內核例程可以調用log函數

(2)大多數用戶進程(守護進程)調用syslog函數以產生日誌消息

(3)在此主機上的一個用戶進程,或通過TCP/IP網絡連接到此主機的其他主機上的一個用戶進程可將日誌消息發向UDP端口514


13.5 單實例守護進程

*文件和記錄鎖機制是一種方法的基礎,該方法用來保證一個守護進程只有一個副本在運行


13.6 守護進程的慣例

*若守護進程使用鎖文件,那麼該文件通常存放在/var/run目錄中

*若守護進程支持配置選項,那麼該配置文件通常存放在/etc目錄中

*守護進程可用命令行啓動,但通常它們是由系統初始化腳本之一(/etc/rc*或/etc/init.d/*)啓動的

*某些守護進程將捕捉SIGHUP信號,當它們接收到該信號時,重新配置文件


13.7 客戶進程-服務器進程模型

*守護進程常常用作服務器進程

*一般而言,服務器是等待客戶進程與其聯繫的一個進程,客戶進程向它提出某種類型的服務要求

*雙向通信:客戶進程向服務器進程發送請求,服務器進程則向客戶進程回送應答

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章