JN-PDD

导航

系统编程--守护进程

1.什么是守护进程(daemon)?

  是运行在后台、独立于控制终端并且周期性的执行某种任务或等待处理某些发生的事件的进程

2.为什么需要daemon?

  Linux系统在启动时会启动很多服务进程,这个进程没有控制终端,不能直接和用户交互,

  os服务进程不能受用户登录注销的影响,他们要一直运行着

3.如何创建daemon?

  创建守护进程最关键的一步是调用setside函数创建一个新的Session,并成为Session Leader.  

int main()
{
    pid_t pc;
    int i,fd,len;
    char* buf="this is a daemon\n";
    len=strlen(buf);
    pc=fork();  //创建一个进程来做守护进程
    if(pc<0){
        printf("error fork!\n");
        exit(1);
    }
    else if(pc>0){
        exit(0);   //结束父进程
    }
    setsid();          //使子进程独立,摆脱原会话控制;摆脱原进程组控制;摆脱控制终端控制,有人fork()两次,保证daemon进程,之后不会打开tty设备
    chdir("/");        //改变当前工作目录,也是为了摆脱父进程的影响
    umask(0);          //设置文件权限掩码
    for(i=0;i<65535;i++){
        close(i);
        while(1){
            if((fd=open("/tmp/daemon.txt",O_CREAT|O_WRONLY|O_APPEND,0600))<0)
            {
                printf("open file error!\n");
                exit(0);
            }
            write(fd,buf,len+1);
            close(fd);
            sleep(2);
        }
    }
}

 

posted on 2017-06-21 18:19  JN-PDD  阅读(255)  评论(0编辑  收藏  举报