c++ Daemon函數讓服務器程序在後臺運行

讓一個程序在後臺運行有很多方法,之前一直用的是 ./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&來驗證效果。


c++ Daemon函數讓服務器程序在後臺運行


分享到:


相關文章: