⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ngx_daemon.c

📁 nginx 反向代理0.7.1版本 用于实现反向代理
💻 C
字号:
/* * 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 + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -