ngx_cycle -- 2




创建 socketfd,并且设置为监听状态作为一个web服务器,初始化中最重要的一步终于到来了// 为 cycle 中的每个监听目标创建 socket,并设置为监听状态 if (ngx_open_listening_sockets(cycle) != NGX_OK) { goto failed; } ngx_open_listening_sockets在这个函数中,有我们熟悉的 TCP 服务端初始化到监听状态的代码// ngx_int_t ngx_open_listening_sockets(ngx_cycle_t *cycle) // 创建 socket 并设置为监听状态 {{{ ngx_int_t ngx_open_listening_sockets(ngx_cycle_t *cycle) { int reuseaddr; ngx_uint_t i, tries, failed; ngx_err_t err; ngx_log_t *log; ngx_socket_t s; ngx_listening_t *ls; reuseaddr = 1; #if (NGX_SUPPRESS_WARN)
#技术帖    #network    #c语言    #socket   
核心初始化工作下面就到了最核心的初始化过程了// 全部初始化工作,包括时间、内存池、配置文件、共享内存 // 、监听连接数组、所有模块的初始化, // 以及配置及log文件创建、连接开启监听 cycle = ngx_init_cycle(&init_cycle); if (cycle == NULL) { if (ngx_test_config) { ngx_log_stderr(0, "configuration file %s test failed", init_cycle.conf_file.data); } return 1; } 如注释中已经写的,这个函数进行了 nginx 最核心部分的初始化工作前面的日志中,我们说过,nginx 的整个初始化过程都是围绕全局变量 ngx_cycle 展开的,重点就在这个函数中ngx_cycle_t说到 ngx_cycle 变量就不得不说 ngx_cycle_t 类型,它记录了 nginx 所需的各种核心的信息// struct ngx_cycle_s // nginx 运行核心结构 {{{ struct ngx_cycle_s { void
#技术帖    #龙潭书斋    #nginx    #opensource   



京ICP备15018585号