關於守護程序的

2021-05-28 02:56:27 字數 980 閱讀 2984

1最近寫了乙個關於守護程序的**,大概步驟有下面幾步:

1建立子程序,父程序退出。

2在子程序中建立新會話。

3改變當前目錄為根目錄

4重設檔案許可權掩碼

5關閉檔案描述符

12 13 

14 剛剛開始的時候對第二個步驟和第三個步驟不是很理解,假如你也遇到這樣問題先去看一下關於程序組和會話的概念,以及守護程序理解會很快。

15 16 

17 18 pid = fork();

19 20 if(pid>0) exit(0);/*creat a child process ,and the parent process exit  */

21 22 setsid();/*通過呼叫此函式可以使得剛剛建立的子程序,脫離終端控制,同時建立次年的程序組,而次程序就會成為該程序組的首程序。會話中的程序通過該會話中的領頭程序(控制程序

)與乙個終端相連。該終端是會話的控制終端。乙個會話只能有乙個控制終端,但是守護程序是沒有控制終端的。如果會話存在乙個控制終端,則它必然擁有乙個前台程序組。屬於該組的》    程序可以從終端終端獲得輸入。這時,其他的程序組都為後台程序。

23     由於守護程序沒有控制終端,而使用fork()函式建立的子程序繼承了父程序的控制終端、會話和程序組,因此,必須建立新的會話,以脫離父程序的影響。

24     setsid()函式將建立新的會話,並使得呼叫setsid()函式的程序成為新會話的領頭程序。這樣你在終端傳送的訊號他就不會收到,*/

25 26 chdir("/");/*更改工作目錄,子程序父程序的*/

27 28 umask(0);//重新設定檔案許可權

29 30  for(i = 0; i < getdtablesize(); i++)//關閉檔案描述符 gettablesize 用來獲得檔案的最大描述符

31 32   {

33 34   close(i);

平時經常用的是vi 所以會有行號,不會影響閱讀,不刪除了

Linux 系統 關於守護程序

常駐程序,其實就是守護程序。在某家公司工作期間,會使用它來作為需要保活執行的機制,用以維護消費者程序。但當時對於守護程序的理解還是不夠深入,所以現在再把這塊做個整理,並結合當時遇到的乙個問題例項進行分析。注 下面內容都針對linux作業系統。mac上的launchd與systemd作用相同,而且據說...

守護程序之守護程序的慣例

在unix系統中,守護程序遵循下列公共慣例 例項 程式清單13 3所示程式說明了守護程序可以重讀其配置檔案的一種方法。該程式使用sigwait以及多執行緒 可參考 程式清單13 3 守護程序重讀配置檔案 include apue.h include include sigset t mask ext...

守護程序及守護程序輸出

1 建立乙個輸出程式 2 建立乙個守護程序 1 建立乙個輸出程式 守護程序不與終端聯絡,所以,需要另外建立乙個程式用於輸出。也可以直接使用 bin echo example daemon help.cc include int main int argc,char argv else if argc...