nginx源码解析-ngx_get_options()
来源:互联网 发布:电影没字幕翻译软件 编辑:程序博客网 时间:2024/05/17 21:59
nginx源码解析-ngx_get_options()
/* * 解析者 : wenpeng_lu * 时间 :2017/4/8 * 功能 : 获取命令行参数 * 参数 : main()传递过来的参数 * 返回值 : NGX_OK(0) 成功 * NGX_ERROR(-1) 失败 */static ngx_int_tngx_get_options(int argc, char *const *argv){ u_char *p; ngx_int_t i; // 命令行参数解析 for (i = 1; i < argc; i++) { p = (u_char *) argv[i]; if (*p++ != '-') { ngx_log_stderr(0, "invalid option: \"%s\"", argv[i]); return NGX_ERROR; } while (*p) { // 注意*p++ switch (*p++) { case '?': case 'h': ngx_show_version = 1; ngx_show_help = 1; break; case 'v': ngx_show_version = 1; break; case 'V': ngx_show_version = 1; ngx_show_configure = 1; break; case 't': ngx_test_config = 1; break; case 'T': ngx_test_config = 1; ngx_dump_config = 1; break; case 'q': // 在测试配置阶段不输出信息 ngx_quiet_mode = 1; break; case 'p': // 安装路径 if (*p) { // 形如-p/usr/local/nginx/ ngx_prefix = p; goto next; } if (argv[++i]) { // 形如-p /usr/local/nginx/ ngx_prefix = (u_char *) argv[i]; goto next; } // 错误信息显示到控制台 ngx_log_stderr(0, "option \"-p\" requires directory name"); return NGX_ERROR; case 'c': // 配置文件路径(相对于安装路径) if (*p) { // 形如-c/conf/nginx.conf ngx_conf_file = p; goto next; } if (argv[++i]) { // 形如-c /conf/nginx.conf ngx_conf_file = (u_char *) argv[i]; goto next; } ngx_log_stderr(0, "option \"-c\" requires file name"); return NGX_ERROR; case 'g': /* * 另行指定全局配置项的启动方式 * -g参数的约束条件是指定的配置项不能与默认路径下的nginx.conf中的配置项相冲突,否则无法启动 * 另一个约束条件是, 以-g方式启动的Nginx服务执行其他命令行时,需要把-g参数也带上,否则可能出现配置项不匹配的情形 */ if (*p) { // 形如-gpid/var/nginx/test.pid; ngx_conf_params = p; goto next; } if (argv[++i]) { // 形如-g pid/var/nginx/test.pid; ngx_conf_params = (u_char *) argv[i]; goto next; } ngx_log_stderr(0, "option \"-g\" requires parameter"); return NGX_ERROR; case 's': // 发送信号给管理进程 if (*p) { // 形如-sstop ngx_signal = (char *) p; } else if (argv[++i]) { // 形如-s stop ngx_signal = argv[i]; } else { // 显示到控制台 ngx_log_stderr(0, "option \"-s\" requires parameter"); return NGX_ERROR; } if (ngx_strcmp(ngx_signal, "stop") == 0 || ngx_strcmp(ngx_signal, "quit") == 0 || ngx_strcmp(ngx_signal, "reopen") == 0 || ngx_strcmp(ngx_signal, "reload") == 0) { // 设置信号 ngx_process = NGX_PROCESS_SIGNALLER; goto next; } // 无效的信号 ngx_log_stderr(0, "invalid option: \"-s %s\"", ngx_signal); return NGX_ERROR; default: ngx_log_stderr(0, "invalid option: \"%c\"", *(p - 1)); return NGX_ERROR; } } next: continue; } return NGX_OK;}
0 0
- nginx源码解析-ngx_get_options()
- Nginx源码完全注释(9)nginx.c: ngx_get_options
- Nginx源码完全注释(9)nginx.c: ngx_get_options .
- Nginx源码解析
- nginx源码解析2
- nginx源码解析-ngx_show_version_info()
- nginx源码分析--nginx模块解析
- [nginx源码分析]nginx handler 模块解析
- [nginx源码分析]nginx filter模块解析
- nginx源码分析--配置文件解析
- nginx源码分析--配置文件解析
- nginx源码解析-ngx_strerror()/ngx_strerror_init()
- nginx upstream使用及源码解析
- nginx 源码分析 1 - 配置解析
- nginx源码解析之内存池
- nginx源码解析之数据结构篇
- [nginx源码分析]主函数解析
- [nginx源码分析]配置解析1
- CentOS 7的yum源中貌似没有正常安装mysql
- scrollview嵌套listview最后一行显示不全的问题
- Java 代理模式总结
- 【网络排障】酒店网络非常常见故障一例
- mkpasswd 的使用
- nginx源码解析-ngx_get_options()
- Thinking in Java
- 一个测试中用到的小程序
- 如何访问 Google?使用VPN解锁
- 461. Hamming Distance
- 开篇喂各路神仙
- Gym101147A sg函数
- jAVA8 十大新特性
- C++模板类&适配器