Linux守護程序設計

2022-08-31 08:57:08 字數 1705 閱讀 7050

一、什麼是守護程序

守護程序,也就是通常說的daemon(精靈)程序,是linux中的一種服務程序。它的特點是:

不占用控制終端(後台執行)

獨立於控制終端

週期性執行

1.1後台執行

守護程序需要獨立於任何乙個控制終端。實現方法呼叫是通過建立子程序來充當守護程序,而父程序退出,這樣子程序就可以在後台執行。(範例展示)

pid=fork();

if(pid>0)

exit(0); //父程序退出

else (pid==0)

1.2獨立於控制終端

守護程序不能占用控制終端,因此需要在後台執行。實現方法是呼叫setsid()函式。

pid=fork();

if(pid>0)

exit(0); //父程序退出

else (pid==0) //護程序

1.3擺脫父程序影響

1.3.1修改工作目錄

程序活動時,其工作目錄所在的檔案系統不能解除安裝。例如:我們是從/mnt/usb目錄下啟動該護程序的,那麼如果守護程序的工作目錄就是 /mnt/usb,我們就無法在守護程序還在執行的情況下umount /mnt/usb。所以一般需要將守護的工作目錄切換到根目錄。護的工作目錄切換到根目錄。chdir("/");

1.3.2修改檔案許可權掩碼

檔案許可權掩碼是指遮蔽掉檔案許可權中的對應位。比如掩碼是500,它就遮蔽了檔案建立者的可讀與可執行許可權。由於子程序要繼承父程序的檔案許可權掩 碼,這勢必影響子程序中新建立的檔案的訪問許可權,為避免該影響,就需要重新對子程序中的許可權掩碼清零。通常的使用方法為函式:程中的許可權掩碼清零。通常的 使用方法為函式:umask(0)

1.3.3關閉開啟檔案

同檔案許可權碼一樣,子程序還會從父程序那裡繼承一些已經開啟了的檔案。這些被開啟的檔案可能永遠不會被守護程序讀寫,但它們一樣消耗系統資源,而且會導致檔案所在的檔案系統無法解除安裝。因此在子程序中需要將這些檔案關閉。

for(i=0;i二、守護程序編寫

1 #include 2 #include 3 #include 4 #include 5 

6 int main()

7 22 if(pid>0)

23 exit(0);

24

25 //2.脫離控制端

26 setsid();

27

28 改變工作目錄

29 chdir("/");

30 清除掩碼

31 umask(0);

32

33 關閉開啟的檔案

34 for(i;i<65535;i++)

35 close(i);

36

37 //4.守護程序的實際工作

38 while(1)

39

46 write(fd,buffer,strlen(buffer));

47 close(fd);

48 sleep(1);

49 }

50 }

編譯執行如上**則會出現:

Linux守護程序

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

Linux 守護程序

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

Linux守護程序

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