是linux的後台服務程序。它是乙個生存週期較長的程序,沒有控制終端,輸出無處顯示。使用者層守護程序的父程序是init程序。
守護程序建立步驟:
1、建立子程序,父程序退出,子程序被init自動收養;fork exit
2、呼叫setsid建立新會話,成為新會話的首程序,成為新程序組的組長程序,擺脫父程序繼承過來的會話、程序組等;setsid
3、改變當前目錄為根目錄,保證工作的檔案目錄不被刪除;chdir(「/」)
4、重設檔案許可權掩碼,給子程序更大的許可權;umask(0)
5、關閉不用的檔案描述符,因為會消耗資源;close
乙個守護程序的例項:每隔10s寫入乙個「tick」
#include
#include
#include
#include
#include
#define maxfile 65535
int main()
else if(pid > 0){
exit(0); 這邊父程序退出 只留下子程序
setsid();
if(chdir("/") < 0){
perror("chdir failed");
exit(1);
umask(0);
for(i = 0; i < maxfile; i++){
close(i);
while(1){
perror("open log failed");
exit(1);
write(fd, buf, len+1);
close(fd);
sleep(10);
daemon守護程序
daemon守護程序 守護程序是乙個後台程序,不能夠控制終端,所以任何輸出,無論是向標準出錯裝置stderr還是向標準輸出裝置stdout的輸出都需做特別處理。守護程序一般在系統啟動時啟動,它的父程序是init程序。建立守護程序 1在父程序執行fork然後讓父程序退出。2在子程序中使用setsid呼...
守護程序 daemon
守護程序常常在系統引導裝入時啟動,在系統關閉時終止。一般說daemon程式在後台執行,是因為它沒有控制終端,無法和前台的使用者互動。daemon程式一般都作為服務程式使用,等待客戶端程式與它通訊。我們也把執行的daemon程式稱作守護程序。乙個守護程序的父程序是init程序,因為它真正的父程序在fo...
守護程序(Daemon)
守護程序 daemon 一般是為了保護我們的程式 服務的正常執行,當程式被關閉 異常退出等時再次啟動程式 恢復服務。例如 http 服務的守護程序叫 httpd,mysql 服務的守護程序叫 mysqld。或者有時候我們需要讓我們的程式 服務能不中斷地執行,在關閉終端後也能在後台默默執行,除了可以這...