让一个程序在后台运行有很多方法,之前一直用的是 ./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&来验证效果。