C語言寫監控守護程序

2021-06-09 04:21:12 字數 1806 閱讀 4009

** 

unix programming faq 中文版 v0.1.0**)

乙個使用以上函式的範例程式:

#include ;

#include ;

#include ;

#include ;

#include ;

#include ;

#include ;

int daemon(int,int);

int fork2(void);

void closeall(int);

#define tcp_port 8888

void errexit(const char *str)

void errreport(const char *str)

/* 實際的子程序在此. */

void run_child(int sock)

/* 這是守護程式的主要工作 -- 偵聽連線並生成子程序 */

void process() }}

int main()

openlog("test", log_pid, log_daemon);

process();

return 0;

}

#include ;

#include ;

#include ;

#include ;

#include ;

#include ;

#include ;

/* closeall() -- 關閉所有》;=給定值的檔案描述符 */

void closeall(int fd)

/* daemon() - 將程序從使用者端脫離並消失進入後台,若失敗返回-1,

* 但是在那種情況下你只能退出,因為我們可能已經生成了子程序。

* 這是基於bsd的版本,所以呼叫方需負責類似umask等等其它的工作。

*//* 相信在所有posix系統上都能工作 */

int daemon(int nochdir, int noclose)

if (setsid() < 0) /* 不應該失敗 */

return -1;

/* 如果你希望將來獲得乙個控制tty,則排除(dyke)以下的switch語句 */

/* -- 正常情況不建議用於守護程式 */

switch (fork())

if (!nochdir)

chdir("/");

if (!noclose)

return 0;

}/* fork2() -- 類似fork函式,但子程序立刻變成孤兒程序

* (當它退出時不產生僵死程序)

* 返回1給父程序,不是任何有意義的程序號.

* 父程序不能使用wait函式等待子程序結束 (它們是無關的).

*//* 這個版本假設你沒有捕獲和忽略sigchld訊號. */

int fork2()

} if (pid < 0 || waitpid(pid,&status,0) < 0)

return -1;

if (wifexited(status))

if (wexitstatus(status) == 0)

return 1;

else

errno = wexitstatus(status);

else

errno = eintr; /* 唉,類似這個 :-) */

return -1;

}

c語言之 守護程序

include include include include 守戶程序在系統啟動時啟動,系統關閉時終止 守戶程序的建立方法 1.將子程序放入後台。終止父程序 2.在子程序中建立新會話。setsid 3.關閉開啟的檔案描述符 4.改變工作目錄 5.重設檔案許可權掩碼 6.處理sigchld訊號sig...

shell監控PHP守護程序

php指令碼以守護程序的方式,shell指令碼監控php指令碼是否工作,若php指令碼未工作,則啟動php指令碼。cat run.php dowhile true 控制台執行run.php sy sy pc daemon php run.php 1 7876檢視是否執行,上文和下文得到的7868,是...

linux守護程序寫法 守護程序怎麼寫,以及作用

linux守護程序 編寫規則 1.建立子程序,父程序退出 2.在子程序中建立新會話 setsid函式就是用於建立乙個新的會話,並擔任該會話組的組長,呼叫setsid有下面3個作用。讓程序擺脫原會話的控制 讓程序擺脫原程序組的控制 讓程序擺脫原控制終端的控制 3.改變當前目錄為根目錄 4.重設檔案許可...