守护进程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);
    }
}
 
                     
                    
                 
                    
                
 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号