Linux之守護程序

2021-07-15 08:08:32 字數 1053 閱讀 6039

守護程序是在作業系統執行起來以後常駐記憶體的程序,這些程序默默的在後台進行這自己的工作,當然我們是發現不了的,在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...