守护进程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);
}


}

posted @ 2017-08-18 15:24  聊哥  阅读(393)  评论(0编辑  收藏  举报