服务器初始化为守护进程

来源:互联网 发布:网络投资盘 编辑:程序博客网 时间:2024/05/16 17:27

c/c++ 初始化为守护进程  大部分服务器框架都有这样一段代码 基本上固定这么写了

脱离终端进程的控制 独立进程组会话 忽略部分信号


void InitDaemon(void)

{
    pid_t pid = 0;

    if ((pid = fork()) != 0) //创建一个子进程 进程退出 子进程继续执行
    {
        exit(0);
    }

    setsid(); //成为新会话首进程成为一个新进程组的组长进程并且脱离控制终端。


//忽略部分信号

    signal(SIGINT,  SIG_IGN);
    signal(SIGHUP,  SIG_IGN);
    signal(SIGQUIT, SIG_IGN);
    signal(SIGPIPE, SIG_IGN);
    signal(SIGTTOU, SIG_IGN);
    signal(SIGTTIN, SIG_IGN);
    signal(SIGCHLD, SIG_IGN);
    signal(SIGTERM, SIG_IGN);
    signal(SIGHUP,  SIG_IGN);
    ignore_pipe();

    if ((pid = fork()) != 0)
    {
        exit(0);
    }

    umask(0);//使得拥有文件的所有权限xrw
}
原创粉丝点击