创建守护进程

守护进程有如下几个概念
1 创建一个新的子进程
2 设置允许当前进程创建文件或者目录最大可操作的权限
3 设置新的进程组id
4 把根目录切换的指定的目录
5 关闭标准输入和输出


#include <stdio.h>
#include <unistd.h>
#include <stdlib.h>
#include <sys/stat.h>
int daemon_it(){

    pid_t pid,sid;
    //创建一个子进程
    pid = fork();
    if (pid < 0){
        exit(EXIT_FAILURE);
    }
    if (pid > 0){
        exit(EXIT_SUCCESS);
    }
    //设置文件掩码,最大权限
    umask(0);
    //创建一个新的会话id
    sid = setsid();
    if (sid < 0){
        exit(EXIT_FAILURE);
    }
    //切换到根目录
    if (chdir("/") < 0) {
        exit(EXIT_FAILURE);
    }

    //关闭标准输出,输入,error
    close(STDIN_FILENO);
    close(STDOUT_FILENO);
    close(STDERR_FILENO);

    return 0;
}

void test_daemon(){
    puts("test daemon");
    daemon_it();
    while (1) {
        puts("waiting...\n");
        sleep(1);
    }
}

猜你喜欢

转载自blog.csdn.net/cabing2005/article/details/78387465