標頭檔案與函式原型
#include
int daemon(int nochdir,int noclose)
建立守護程序前提條件
將程序的工作目錄修改為"/"根目錄。daemon的引數nochdir為0時,即可將工作目錄修改為根目錄;
將標準輸入,輸出和錯誤輸出重定向到/dev/null daemon的引數noclose為0時,輸入,輸出以及錯誤輸出重定向到/dev/null 。
返回值:成功返回0 錯誤返回1
deamon()函式解析
#include int main(int argc,char *ar**)
子程序內容
}int daemon( int nochdir, int noclose )
//如果替換成功,那麼鍵盤的任何操作將不會對該程序產生任何影響,因為0,1,2控制代碼所在處的fops檔案操作集已經都變成了,
//被重定向為"/dev/null"空洞裝置的fops.所以對0,1,2控制代碼的讀寫操作,也就是在對/dev/null裝置作讀寫操作.
close(fd); //關閉開啟的/dev/null
} pid = fork();//建立子程序.
if (pid < 0)
return -1;
if (pid > 0)
_exit(0); //返回執行的是父程序,那麼父程序退出,讓子程序變成真正的孤兒程序.
//ok,我們期望的daemon子程序執行到這裡了.
if ( setsid() < 0 ) //設定session id.
return -1;
return 0; //成功建立daemon子程序[luther.gliethttp].
}
daemon守護程序
daemon守護程序 守護程序是乙個後台程序,不能夠控制終端,所以任何輸出,無論是向標準出錯裝置stderr還是向標準輸出裝置stdout的輸出都需做特別處理。守護程序一般在系統啟動時啟動,它的父程序是init程序。建立守護程序 1在父程序執行fork然後讓父程序退出。2在子程序中使用setsid呼...
守護程序 daemon
守護程序常常在系統引導裝入時啟動,在系統關閉時終止。一般說daemon程式在後台執行,是因為它沒有控制終端,無法和前台的使用者互動。daemon程式一般都作為服務程式使用,等待客戶端程式與它通訊。我們也把執行的daemon程式稱作守護程序。乙個守護程序的父程序是init程序,因為它真正的父程序在fo...
守護程序(Daemon)
守護程序 daemon 一般是為了保護我們的程式 服務的正常執行,當程式被關閉 異常退出等時再次啟動程式 恢復服務。例如 http 服務的守護程序叫 httpd,mysql 服務的守護程序叫 mysqld。或者有時候我們需要讓我們的程式 服務能不中斷地執行,在關閉終端後也能在後台默默執行,除了可以這...