在此之前,遇到需要创建守护进程的时候,我一般用如下的代码块:
- void init_daemon(void)
- {
- pid_t pid;
- int i;
- pid=fork();
- if(pid>0)
- {
- exit(0);
- }
- else if(pid < 0 )
- {
- perror("创建子进程失败\n");
- exit(1);
- }
- else if(pid == 0)
- {
- setsid();
- //改变工作目录到tmp
- chdir("/tmp");
- //重设文件掩码
- umask(0);
- //关闭文件描述符
- for(i=0;i<NOFILE;++i)
- {
- close(i);
- }
- return;
- }
- }
其实linux已经为我们准备好了系统调用:daemon()。
我们通过man命令可以得到他的头文件和函数原型:
#include <unistd.h>
int daemon(int nochdir, int noclose);
在调用时,一般只要daemon(0,0),即可。它比我们自己写代码块来的安全和稳定。
本文转载自:http://www.mysql100.com/c/c_error_list/2013/0305/336.html
转载于:https://blog.51cto.com/305460883/1147560
本文介绍了一种简化创建Linux守护进程的方法,即使用系统调用daemon()函数,相较于传统手动编写守护进程代码块的方式更为安全稳定。
483

被折叠的 条评论
为什么被折叠?



