
c/c++基础
joescott
这个作者很懒,什么都没留下…
展开
-
nginx源码分析之ngx_core_commands
ngx_core_commands是核心模块指令, 该变量的定义是在src/core/nginx.c中定义的。该变量为一个数组, 每个元素都是ngx_command_t类型,下面逐步解析这个变量。ngx_command_t类型:(src/core/ngx_conf_file.h)typedef ngx_command_s ngx_command_t;struct ngx_c原创 2013-11-28 16:56:02 · 2288 阅读 · 0 评论 -
nginx主函数分析
nginx的源代码结构如图:入口程序, 及主程序位于src/core/nginx.c中的main函数, 下面来简单的过下这个主函数做了些什么事情:ngx_debug_init() 调试相关的初始化, 用于开发环境的调试ngx_strerror_init() 错误信息相关的初始化, 如果初始化失败, 则直接退出ngx_get_options() 获取命令行的参数选项,并将对应的参数值原创 2013-11-28 19:38:41 · 2267 阅读 · 0 评论 -
ngx_os_init函数详解
ngx_os_init函数定义在src/os/unix/ngx_os.h, os/unix/ngx_posix_init.c, 主要初始化操作系统级的资源限制到一些全局的变量中, 比如ngx_pagesize, ngx_cacheline_size, ngx_max_sockets, ngx_inherited_nonblocking等。 源代码如下:ngx_int_tngx_os_init原创 2013-11-30 11:06:25 · 2901 阅读 · 0 评论 -
ngx_add_inherited_sockets 函数详解
ngx_add_inherited_sockets 函数通过环境变量NGINX完成socket的继承,继承来的socket将会放到init_cycle的listening数组中。在NGINX环境变量中,每个socket中间用冒号或分号隔开。完成继承同时设置全局变量ngx_inherited为1。定义在src/core/nginx.c中:具体代码如下: static ngx_int_t原创 2013-11-30 11:54:37 · 2530 阅读 · 2 评论 -
ngx_process_options函数详解
ngx_process_options是初始化init_cycle中的一些如: conf_file,prefix,conf_prefix等字段的功能, 其方法的定义在src/core/nginx.c中, 以下为详细代码:static ngx_int_tngx_process_options(ngx_cycle_t *cycle){ u_char *p; size_t原创 2013-11-29 17:29:16 · 2243 阅读 · 0 评论 -
ngx_save_argv方法详解
ngx_save_argv方法在src/core/nginx.c中定义, 用于备份参数到init_cycle中。该函数主要作用就是将参数个数以及参数的信息备份在ngx_argc和ngx_argv变量中, 这两个变量是在 src/os/unix/ngx_process.c中定义的。int ngx_argc;原创 2013-11-29 17:20:59 · 1429 阅读 · 0 评论 -
nginx基本数据类型--字符串
在nginx源码目录的src/core/ngx_string.h|c里面,包含了字符串的封装以及字符串相关操作的api。nginx提供了一个带长度的字符串结构ngx_str_t,它的原型如下:typedef struct { size_t len; // 字符串长度 u_char *data; // 字符串数据的开头指针} ngx_str_t;原创 2013-11-29 14:32:45 · 9552 阅读 · 0 评论 -
ngx_init_cycle()详解
ngx_init_cycle是nginx启动比较核心的一部分功能, 很多的变量都在这个过程进行初始化。 下面从代码的层面详细介绍下,这个过程做了哪些事情。源代码位于src/core/ngx_cycle.h|c.首先看下几个相关的数据结构:1. ngx_cycle_t 数据结构:typedef struct ngx_cycle_s ngx_cycle_t;struct ngx_c原创 2013-11-29 09:44:21 · 3030 阅读 · 0 评论 -
nginx内存池管理
nginx通过内存池这种机制, 实现对内存以及使用资源的统一申请和撤销操作。 本文是从源代码的角度分析内存池。原创 2013-11-29 09:20:31 · 1117 阅读 · 0 评论 -
nginx日志类解读
啊原创 2013-11-28 19:43:02 · 3149 阅读 · 0 评论 -
ngx_master_process_cycle函数详解
ngx_master_process_cycle在src/os/unix/ngx_process_cycle.c中定义, 该方法是个无限循环函数, 用于实现nginx的主功能。下面是该函数的详细代码:voidngx_master_process_cycle(ngx_cycle_t *cycle){ char *title; u_char原创 2013-11-30 14:45:49 · 1216 阅读 · 0 评论