Nginx源码阅读问题集锦

博客围绕Nginx展开,介绍了ngx_cdecl宏定义用于兼容,ngx_get_options函数解析命令行参数,ngx_time_init函数初始化时间变量等。还提及了worker_processes成为命令的情况,以及ngx_strerror_init、ngx_regex_init等函数的相关内容。

1.ngx_cdecl-宏定义,保留做兼容

最近在看nginx源代码的时候,在很多函数定义的地方都带有ngx_cdecl这个宏定义。如:
int ngx_cdecl
main(int argc, char *const *argv);
void ngx_cdecl
ngx_log_stderr(ngx_err_t err, const char *fmt, ...);
结果一看它有声明,仅仅只是一个定义为空的宏.
#define ngx_cdecl
然后查询了相关资料后,觉得应该是多平台之间不同的编译器有不同的编译选项,只是为了以后其它平台有
需要添加的或扩展的编译时选项而预留的.
例如在VC环境下进行回调函数的声明时,很多时候都会加上_stdcall、_cdecl、 _fastcall这三个在
windows平台下指定函数调用的方式的编译选项.
所以,这种定义为空的宏的作用是预留下以后平台移植时的其它选项的定义,该仅仅是为了移植的方便.

2.ngx_get_options-函数,获取命令行参数并解析

static ngx_int_t ngx_get_options(int argc, char *const *argv)
{...}

3.ngx_time_init-函数,初始化时间变量

// ngx_times.c,初始化各个cache时间变量
// 调用ngx_time_update(),得到当前的时间

4.NGX_PCRE-宏定义,是否启用正则

D:\005-代码\001-开源项目源码\003-nginx-1.13.7\objs\ngx_auto_config.h
#define NGX_PCRE  1

D:\005-代码\001-开源项目源码\003-nginx-1.13.7\src\core\nginx.c
#if (NGX_PCRE)
    ngx_regex_init();
#endif

5.worker_processesr如何成为一个命令的

D:\005-代码\001-开源项目源码\003-nginx-1.13.7\src\core\nginx.c
// ngx_core_module定义的核心指令,都在main域配置
// 配置结构体是ngx_core_conf_t,定义在ngx_cycle.h
// typedef struct ngx_command_s ngx_command_t
// 初始化nginx命令的结构体对象数组
static ngx_command_t  ngx_core_commands[]

6.ngx_set_worker_processes

D:\005-代码\001-开源项目源码\003-nginx-1.13.7\src\core\nginx.c
static char *
ngx_set_worker_processes(ngx_conf_t *cf, ngx_command_t *cmd, void *conf)
{...}

7.ngx_strerror_init()-初始化错误信息

ngx_strerror_init()函数的意义

8.ngx_regex_init()--nginx中的正则初始化

ngx_reg的相关内容

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值