守護程序
什麼是守護程序
守護程序,也稱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關閉所有的檔案...