讓一個程序在後臺運行有很多方法,之前一直用的是 ./hello & 這樣的形式。這個&符號就可以告訴操作系統以後臺的方式運行可執行文件。今天我們來講講Daemon函數如何讓一個程序在後臺運行。
Daemon函數介紹:
<code>int
daemon
(
int
nochdir,int
noclose)/<code>
參數說明:
當nochdir為零時,當前目錄變為根目錄,否則不變。
當noclose為零時,標準輸入,標準輸出,錯誤輸出重定向為/dev/null.也就是不輸出任何信息,否則照樣輸出。
返回值:
deamon()調用了fork(),如果fork成功那麼父進程就調用_exit(2)退出,所以看到的錯誤信息全部是子進程產生的,如果成功函數返回0,否則返回-1並設置errno.
<code>int
main
(
int
argc,char
*argv[]) {char
strCurPath[PATH_MAX];if
(daemon(1
,1
)0
) { perror("error daemon ... \n"
)exit
(1
); } sleep(10
);if
(getcwd(strCurPath, PATH_MAX) ==NULL
) { perror("error getcwd"
);exit
(1
); }printf
("%s\n"
, strCurPath);return
0
; }/<code>
假如運行成功,父進程在daemon函數運行完畢後自殺,以後的休眠和打印全部是子進程來運行,可以修改daemon函數的參數來看效果,可以去掉daemon一句,用./a.out&來驗證效果。