守护进程的基本步骤
1.创建一个子进程(做守护进程) 父进程消亡
fork
2.创建一个会话(彻底脱离终端) setsid();
3.改变当前的工作目录 chdir("/tmp")
4.修改掩码权限 umask(0)
5.关闭所有文件描述符
#include"my.h"
#include<time.h>
void init_daemon()
{
//1.创建一个子进程(做守护进程) 父进程消亡
pid_t pid = fork();
if(pid>0)
{
exit(0);
}
else if(pid==0)
{
int n,i;
//2.创建一个会话(彻底脱离终端) setsid();
setsid();
//3.改变当前的工作目录 chdir("/tmp")
chdir("/tmp");
//4.修改掩码权限 umask(0)
umask(0);
//5.关闭所有文件描述符
n = getdtablesize();
for(i=0;i<n;i++)
{
close(i);
}
}
}
int main()
{
FILE *fp=NULL;
time_t t;
init_daemon();//创建守护进程
while(1)
{
fp = fopen("time.log","a");
if(fp!=NULL)
{
t = time(NULL);
fprintf(fp,"%s\n",ctime(&t));//将ctime结果输出到文件fp
fclose(fp);
sleep(1);
}
}
return 0;
}