守护进程

一。守护进程

1、守护进程的概念

2、守护进程创建流程

  2.1创建子进程,退出父进程(fork)

  2.2子进程创建新会话(setsid)

  2.3改变进程的工作目录(chdir)

  2.4指定文件掩码(unmask)

  2.5关闭文件描述符,或者重定向 /dev/null (dup2)

  2.6开始守护进程主逻辑

  2.7退出守护进程

2、守护进程创建

#include<stdio.h>
#include<sys/types.h>
#include<sys/stat.h>
#include<unistd.h>
#include<fcntl.h>
int  mydaemond()
{
        pid_t pid,sid;
        pid=fork();
        if(pid>0)
        {
                return 0;
        }
        sid=setsid();
        int ret=chdir("/home/lushuncheng");
        if(ret==-1)
        {
                perror("chdir error");
                return 0;
        }
        umask(0002);
        close(STDIN_FILENO);
        int fd=open("/dev/null",O_RDWR);
        dup2(fd,STDOUT_FILENO);
        dup2(fd,STDERR_FILENO);
}
int main()
{
        mydaemond(); //创建守护进程
        while(1)
        {
        。//主逻辑
        }
}  
原文地址:https://www.cnblogs.com/sclu/p/11263614.html