Daemon函數的用法函數
說明:spa
讓一個程序後臺運行。.net
原型:code
- #include <unistd.h>
-
- int daemon(int nochdir, int noclose);
blog
參數:進程
當 nochdir爲零時,當前目錄變爲根目錄,不然不變;ip
當 noclose爲零時,標準輸入、標準輸出和錯誤輸出重導向爲/dev/null,也就是不輸出任何信 息,不然照樣輸出。get
返回值:原型
deamon()調用了fork(),若是fork成功,那麼父進程就調用_exit(2)退出,因此看到的錯誤信息 所有是子進程產生的。若是成功函數返回0,不然返回-1並設置errno。string
示例:
- #include <stdio.h>
- #include <stdlib.h>
- #include <unistd.h>
- #include <fcntl.h>
- #include <limits.h>
-
- 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;
- }
假如運行成功,父進程在daemon函數運行完畢後自殺,之後的休眠和打印所有是子進程來運行。
能夠修改daemon函數的參數來查看效果。
能夠去掉daemon一句,用./a.out&來驗證效果。