Linux守护进程创建流程

#include
#include
#include 
#include 
#include 
#include

void initdaemon()
{
     
        pid_t pid,sid;
        pid=fork();//1:创建子进程
        if(pid>0)
                exit(-1);
        sid=setsid();//2:使用子进程创建新会话
        int ret=chdir("/");//3:改变当前目录到跟目录
        if(ret<0)
        {
     
            perror("chdir failed!");
            exit(-1);
        }

        umask(0002);//4:自定义创建的文件掩码
        //5:关闭,或者重定向不使用的文件描述符0,1,2 
        close(STDIN_FILENO);
        int fd=open("/dev/null",O_RDWR);
        dup2(fd,STDOUT_FILENO);
        dup2(fd,STDERR_FILENO);
}
int main()
{
     
        initdaemon();
        while(1)
        {
     
        //守护进程处理的业务逻辑
        }
        //sigaction注册信号处理函数处理守护进程的退出
        return 0;
}

你可能感兴趣的:(linux)