Nginx之main初探ngx_init_cycle()(上)
2015-03-06 19:15
246 查看
Nginx之main初探ngx_init_cycle()(上)
由于ngx_init_cycle()函数非常庞大,这里只给出前400+行的函数调用关系,后400+将在后面的文章中给出。-->ngx_init_cycle(&init_cycle)
-->ngx_timezone_update()
-->time()
-->localtime()注1:
-->ngx_timeofday()
-->ngx_time_update()
-->ngx_gettimeofday() -- gettimeofday()
-->ngx_gmtime()
-->ngx_localtime()
-->ngx_memory_barrier()
-->ngx_increase_pipe_generation()
-->ngx_create_pool()
-->ngx_memalign() -- ngx_alloc(size, log)
-->ngx_pcalloc()
-->ngx_palloc()
-->ngx_align_ptr()注2:
-->ngx_palloc_block()
-->ngx_memalign()
-->ngx_align_ptr()
-->ngx_palloc_large()
-->ngx_alloc()
-->malloc()
-->ngx_palloc()
-->ngx_memzero()
-->memset()
-->ngx_list_init()
-->ngx_palloc()
-->ngx_queue_init()
-->ngx_strlen() -- strlen()
-->ngx_pnalloc()
-->ngx_palloc_block()
-->ngx_palloc_large()
-->ngx_strlow()
-->ngx_tolower() -- ((c >= 'A' && c <= 'Z') ? (c | 0x20) : c)
-->ngx_array_create()
-->ngx_palloc()
-->ngx_array_init()
-->ngx_palloc()
-->ngx_conf_param()
-->ngx_memzero()
-->ngx_conf_parse()
-->ngx_conf_parse()
-->ngx_open_file() -- open()
-->ngx_fd_info() -- fstat()
-->ngx_alloc()
-->ngx_conf_read_token()
-->ngx_file_size()
-->ngx_memmove() -- memmove()
-->ngx_read_file() -- read()
-->ngx_write_console() -- ngx_write_fd()
--> write()
-->ngx_array_push()
-->ngx_conf_handler()
-->ngx_show_dso_directives()
-->ngx_get_conf()
-->ngx_is_dynamic_module()
-->ngx_get_conf()
-->ngx_test_lockfile()
-->ngx_open_file()
-->ngx_close_file()
-->ngx_delete_file()
-->ngx_create_paths()
-->ngx_create_dir() -- mkdir()
-->ngx_file_info()
-->ngx_log_open_default()
-->ngx_conf_open_file()
下面是陌生函数的用法和小知识点:
注1:time()与localtime()函数不是Nginx自己实现的,是库函数。其用法如下/**
* filename: test_localtime.c
* description: used to see the usage of function localtime()
* date: 2015-03-06
* author: HowardKing
* version: 1.0
*/
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main(void)
{
time_t timer; // time_t is long int
struct tm *tblock;
time(NULL);
tblock = localtime(&timer);
printf("Local time is: %s", asctime(tblock));
return 0;
}
程序输出结果:
<span style="white-space:pre"> </span>Local time is: Fri Jul 31 05:00:00 4461676
注2:C语言中long类型是与机器字长相对应的,而int型来说一般都是4字节。
/** * filename: test_unsigned_long.c * description: find out the size of type long * date: 20150306 * author: HowardKing * version: v1.0 */ #include <stdio.h> #include <stdlib.h> int main(void) { int ii = 100; unsigned long ll = 100; printf("%d\n", sizeof(ii)); printf("%d\n", sizeof(ll)); return 0; }
程序输出结果:
4 8
相关文章推荐
- nginx学习十二 ngx_cycle_t 和 ngx_init_cycle
- Tomcat启动时报: org.apache.catalina.core.AprLifecycleListener.init An incompatible version 错误
- nginx学习12 ngx_cycle_t 和 ngx_init_cycle
- org.apache.catalina.core.AprLifecycleListener init
- ngx_init_cycle()详解
- ngx_init_cycle()详解
- 12.Nginx启动流程之ngx_init_cycle
- ngx_cycle_init的实现
- org.apache.catalina.core.AprLifecycleListener init
- tomcat启动时报错:org.apache.catalina.core.AprLifecycleListener init
- nginx源代码分析 - 启动(二) ngx_init_cycle - 解析配置文件
- Nginx启动(ngx_init_cycle)
- nginx源代码分析 - 启动(三) ngx_init_cycle - 剩余
- ngx_cycle_t结构体及ngx_cycle_init函数分析
- 【转载】tomcat启动时报错:org.apache.catalina.core.AprLifecycleListener init
- ngx_init_cycle()详解
- ngx_init_cycle 学习笔记
- ngx_init_cycle的详细分析
- org.apache.catalina.core.AprLifecycleListener init
- context-param和init-param的区别