守护进程daemon.c
它的特点是:
•不占用控制终端(后台运行)
•独立于控制终端
•周期性运行
#include<stdio.h>
#include<unistd.h>
#include<fcntl.h>
int main()
{
pid_t pid;
int fd;
int i,fd,flag=1;
char *buf="i am a daemon\n";
//1创建子进程
pid=fork();
if(pid<0)
{
printf("creat failed\n");
}
if(pid>0)
exit(0);
//2脱离控制终端 //执行到此的只能是子进程,pid》0的父进程已经退出
setsid();
//3.1改变工作目录
chdir("/");
//3.2清楚掩码
umask(0);
//3.3关闭打开的文件
for(i;i<65535;i++)
{
close(i);
}
//4守护进程的实际工作
while(1)
{
if((flag==1)&&(fd=open("/temp/daemon.log",O_CREAT|O_WRONLY|O_APPEND,0600))<0)
{ printf("open file failed\n");
flag=0;
exit(0);
}
write(fd,buf,strlen(buf));
close(fd);
sleep(1);
}
}