Linux 守護程序 淺解

2022-08-30 01:36:08 字數 2051 閱讀 9430

守護程序

什麼是守護程序

守護程序,也稱daemon程序

守護程序,是linux的後台服務程序。

普通程序和終端的關係:

使用者與系統交流的介面,稱為「終端」。

當在某個終端上執行某個程序時,該終端就稱為該程序的「控制終端」。

當控制終端關閉時,它對應的程序(在該終端上啟動的程序)都將被自動關閉。

守護程序和終端的關係:

守護程序不依賴於任何終端。

守護程序啟動後,將一直執行到系統關閉.

什麼時候使用守護程序

如果希望某個程序不要受到使用者、終端的影響,則可以把該程序實現為「守護程序」。

守護程序的編寫

步驟:

1) 使該程序脫離控制台

(1) 建立乙個子程序,

接著關閉該子程序的父程序。

使得該子程序變成孤兒程序,進而被init收養,稱為init的子程序。

即: pd = fork();

if (pd > 0)

(2) 在子程序中建立新會話

即:setsid();

作用:使該程序脫離原控制終端的控制。

使該程序脫離原程序組的控制。

使該程序脫離原會話的控制。

補充:程序組: 程序組,就是乙個、或多個程序的集合。

每個程序組,都有乙個「程序組id」

每個程序組,都有乙個組長程序,其組長程序程序的pid就是程序組的「程序組id」

會話:乙個會話是乙個、或多個程序組的集合。

乙個會話,開始於使用者登入,終止於該使用者退出。

2)改變該程序的當前目錄。

該程序的當前目錄繼承自父程序。

把該程序的當前目錄改為根目錄。

方法:chdir();

3) 改變檔案許可權掩碼

該程序的檔案許可權掩碼,繼承自父程序。

方法:umask()

一般使用umask(0), 即放開所有遮蔽。

補充:

檔案許可權掩碼:

不是指檔案的訪問許可權。

例:如果某檔案的檔案許可權掩碼是050,

則表示,該檔案的檔案組擁有者,沒有讀許可權、沒有寫許可權。

4)關閉檔案描述符

該程序的檔案描述符,繼承自其父程序。

而,守護程序已不可能在終端上輸出、輸入,所以檔案描述符0,1,2都不會再用。

其他已繼承下來的檔案描述符也不再使用。

所以,需要關閉檔案描述符,以節省資源。

即: for (i=0; i

#include 

#include

#include

#include

#include

#include

#include

#include

#define file_name "test.txt"

#define buff_size 80

int main(void)

else

if (pd > 0)

setsid();

chdir("/");

umask(0);

fd_max = getdtablesize();

for (i=0; i//÷¡¥à£¨ ÿª§ω¯≥㥥ω®õí±œ

// ¥úø™syslog∑˛œò

openlog("my daemon", log_pid, log_daemon);

fd = open(file_name, o_wronly | o_creat, 0666);

//fd = open(file_name, o_wronly);

if (fd == -1)

syslog(log_info, "open file %s succeed!\n", file_name);

while(1)

sleep(5);

}closelog();

return

0;

}

Linux守護程序

linux下守護程序一般分為5步,但是實際上只有前兩步是關鍵。第一步 建立子程序,關閉父程序。使用fork 建立,父程序exit 退出。關鍵第二步 建立新的會話id,setsid 作用是使子程序擺脫原有的會話 程序組 終端的控制,其實,linux下每個程序都是由一號程序建立而來的,每個程序都是1號程...

Linux 守護程序

守護程序daemon,是生存期較長的一種程序,名字一般以字母d結尾。它們常常在系統自舉時啟動,僅在系統關閉時才終止。因為它們沒有控制終端,所以說它們是在後台執行的。linux系統有很多守護程序,它們執行日常事務活動。自舉只有兩個功能 加電自檢和磁碟引導。加電自檢 當我們按下計算機電源開關時,頭幾秒鐘...

Linux守護程序

程式設計級別 一 守護程序的概念 守護程序是一種生存期比較長的程序,常常在系統自舉時啟動,在系統關閉時退出。因為他們沒有控制終端,因此是在後台執行的。二 守護程序的程式設計規則 1清除檔案模式建立遮蔽字 2成為乙個新的會話首程序 3略hup訊號。然後再次fork 4改變當前工作路徑 5關閉所有的檔案...