dameon程序 守護程序

2021-05-02 04:14:13 字數 1237 閱讀 2925

dameon

dameon程序也叫守護程序,當我們需要乙個沒有前台終端,在後台一直執行的程序時,我們怎麼辦?寫乙個程式,在執行的時候加&實行後台執行,這是一種拙劣的辦法。unix有專門的守護程序。

基本知識:

守護程序是在後台執行,沒有實現使用者互動的前台終端,在unix下顯示為?;守護程序都是要在超級使用者的許可權下跑的;守護程序的父程序都是init程序(程序號為1);守護程序是unix預設下都是以d結尾的,表dameon,使用者自己寫的守護程序最好也以d結尾;除update,其它的守護程序都是所在程序組的組長;

用ps檢視前台程序,用ps -e檢視所有的程序

程式範例:

#include

#include

#include

#include

#include

#include

#include

#include

#define maxfile 65535

int main()

else if(pc>0)//如果fork函式返回的id>0,說明在父程序中

printf("son process id=%d/n",getpid());

openlog("demo_update",log_pid, log_daemon);//在子程序中

//demo_update顯示在:的前面,這一點類似於perror 

setsid();

//建立乙個會話,並成為這個會話組組長,也是唯一成員,剝離終端,使此子程序成為乙個孤兒

//程序,由init程序接管

sleep(1);

//建立乙個新會話,要稍微等會才行,沒那麼快

syslog(log_err, "dddddddddd*****%d/n", getppid());

//已經剝離終端,不能用printf,這個getppin()返回init程序id,為1

chdir("/");

//改變當前目錄為根目錄,因為,這個程式一直在跑,將引起不能刪除或修改某個檔案系統

umask(0);

//因為由繼承來的檔案方式可能遮蔽掉了某些位,所以去掉遮蔽,比如可讀,可寫位

for(i=0;i

//由父程序處可能繼承了不需要的開啟檔案,所以關掉檔案描述符,當然某些檔案需要的話,

注:syslog()寫的log在/var/log/裡面的messages裡面

守護程序及守護程序輸出

1 建立乙個輸出程式 2 建立乙個守護程序 1 建立乙個輸出程式 守護程序不與終端聯絡,所以,需要另外建立乙個程式用於輸出。也可以直接使用 bin echo example daemon help.cc include int main int argc,char argv else if argc...

守護程序及守護程序輸出

1 建立乙個輸出程式 2 建立乙個守護程序 1 建立乙個輸出程式 守護程序不與終端聯絡,所以,需要另外建立乙個程式用於輸出。也可以直接使用 bin echo example daemon help.cc include int main int argc,char ar else if argc 2...

守護程序之守護程序的慣例

在unix系統中,守護程序遵循下列公共慣例 例項 程式清單13 3所示程式說明了守護程序可以重讀其配置檔案的一種方法。該程式使用sigwait以及多執行緒 可參考 程式清單13 3 守護程序重讀配置檔案 include apue.h include include sigset t mask ext...