守護程序是在作業系統執行起來以後常駐記憶體的程序,這些程序默默的在後台進行這自己的工作,當然我們是發現不了的,在linux系統下我們可以使用命令來檢視
ps axj 引數a表示列出所有使用者的程序,引數x表示列出控制終端的和沒有控制終端,引數j列出與作業控制相關的資訊
tpgid那一行為-1的表示沒有控制終端,也可以說是守護程序
要建立乙個守護程序的步驟是這樣的:
1.呼叫umask設定檔案掩碼為0
2.fork()建立子程序,exit()父程序
3.呼叫setsid()建立乙個新會話
4.將當前工作目錄更改為根目錄
5.關閉不在需要的檔案那描述符
其中最為重要額第三步:setsid()的呼叫會使得
1).呼叫程序成為新回話的首程序;
2).呼叫程序成為乙個程序組的組長程序;
3).呼叫程序沒有控制終端;
c語言**實現如下:
#include#include#include#include#includevoid my_daemon()
//設定新會話
setsid();
//更改目錄
if(chdir("/")<0)
//關閉檔案描述符
close(0);
close(1);
close(2);
}int main()
當然我們也可以使用系統給的函式daemon();
程式執行後我們可以在後台找到:
可以看到執行**後我的終端還是可以接受我的命令,所以這個程序是在後台執行的,可以用kill -9來結束這個程序
Linux之 守護程序
linux系統啟動時會啟動很多系統服務程序,比如inetd,這些系統服務程序沒有控制終端,不能直接和使用者互動。其它程序都是在使用者登入或執行程式時建立,在執行結束或使用者登出時終止,但系統服務程序不受使用者登入登出的影響,它們一直在執行著。這種程序有乙個名稱叫守護程序 daemon 下面我們用ps...
Linux之守護程序
想實現的目標是通過守護程序monit監控另外乙個程序videocheck是否執行,如果videocheck關閉,則由守護程序重新啟動videocheck程序 本身使用的系統是ubuntu 14.04 monit的 如下 include include include include include ...
Linux之守護程序
daemon程序。通常執行與作業系統後台,脫離控制終端。一般不與使用者直接互動。週期性的等待某個事件發生或週期性執行某一動作。不受使用者登入登出影響。通常採用以d結尾的命名方式。1.fork子程序,讓父程序終止。2.子程序呼叫 setsid 建立新會話 3.通常根據需要,改變工作目錄位置 chdir...