ngx_daemon.c

来自「nginx 反向代理0.7.1版本 用于实现反向代理」· C语言 代码 · 共 69 行

C
69
字号
/* * Copyright (C) Igor Sysoev */#include <ngx_config.h>#include <ngx_core.h>ngx_int_t ngx_daemon(ngx_log_t *log){    int  fd;    switch (fork()) {    case -1:        ngx_log_error(NGX_LOG_EMERG, log, ngx_errno, "fork() failed");        return NGX_ERROR;    case 0:        break;    default:        exit(0);    }    ngx_pid = ngx_getpid();    if (setsid() == -1) {        ngx_log_error(NGX_LOG_EMERG, log, ngx_errno, "setsid() failed");        return NGX_ERROR;    }    umask(0);    fd = open("/dev/null", O_RDWR);    if (fd == -1) {        ngx_log_error(NGX_LOG_EMERG, log, ngx_errno,                      "open(\"/dev/null\") failed");        return NGX_ERROR;    }    if (dup2(fd, STDIN_FILENO) == -1) {        ngx_log_error(NGX_LOG_EMERG, log, ngx_errno, "dup2(STDIN) failed");        return NGX_ERROR;    }    if (dup2(fd, STDOUT_FILENO) == -1) {        ngx_log_error(NGX_LOG_EMERG, log, ngx_errno, "dup2(STDOUT) failed");        return NGX_ERROR;    }#if 0    if (dup2(fd, STDERR_FILENO) == -1) {        ngx_log_error(NGX_LOG_EMERG, log, ngx_errno, "dup2(STDERR) failed");        return NGX_ERROR;    }#endif    if (fd > STDERR_FILENO) {        if (close(fd) == -1) {            ngx_log_error(NGX_LOG_EMERG, log, ngx_errno, "close() failed");            return NGX_ERROR;        }    }    return NGX_OK;}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?