当前位置:网站首页 > R语言数据分析 > 正文

ifstream的头文件(if_nametoindex头文件)



目录

一、数据结构

1. ngx_cycle_t的数据结构

2. ngx_core_conf_t的数据结构

二、初始化过程

1. 创建一个内存池。

2. 拷贝配置文件的路径前缀(/usr/local/nginx)

3. Nginx的路径前缀拷贝

4. 拷贝配置文件信息

5. 拷贝配置参数信息

6. 路径信息初始化

7. 初始化打开的文件句柄

8. 初始化shared_memory链表

9. 初始化listening数组

10. 模块创建和核心配置结构初始化ngx_core_conf_t

11. 配置文件nginx.conf解析

12. 创建PID文件

13. 遍历cycle->open_files链表中的文件,并且打开

14. 创建共享内存并初始化

15. 处理listening数组,并开始监听socket

16. 关闭或删除残留在old_cycle中的资源

Nginx的大部分初始化工作主要围绕一个类型为ngx_cycle_t类型的全局变量(cycle)展开。本文主要讲解cycle的数据结构以及初始化过程中干了什么事情。

cycle的初始化过程在/src/core/cycle.c文件中。

在使用gdb调试nginx源码时,需要设置启动变量

nginx bianliang_初始化

set args -c /usr/local/nginx/conf/nginx.conf

nginx bianliang_nginx_02

在上图中完成了配置文件

nginx bianliang_初始化_03

nginx bianliang_配置文件_04

全局变量指针指向该结构体,并使用volatile修饰

nginx bianliang_初始化_05

保存启动时的环境变量

nginx bianliang_初始化_06

nginx bianliang_配置文件_07

给nginx的模块编号,仅仅是编号

nginx bianliang_配置文件_08

nginx bianliang_nginx bianliang_09

nginx bianliang_配置文件_10

nginx bianliang_配置文件_11

将模块编号和名字转移到cycle->modules数组中

nginx bianliang_配置文件_12

nginx bianliang_nginx bianliang_13

可以看出0和1是NGX_CORE_MODULE 模块,会执行相应的create_conf函数

nginx bianliang_nginx bianliang_14

nginx bianliang_nginx_15

nginx bianliang_nginx bianliang_16

会执行上面的ngx_core_module_create_conf函数,将从内存中分配 并存储到

nginx bianliang_初始化_17

nginx bianliang_nginx bianliang_18

nginx bianliang_初始化_19

nginx bianliang_nginx_20

nginx bianliang_初始化_21

至此完成了 配置文件中 worker_processes 解析以及赋值操作

2. ngx_core_conf_t的数据结构


ngx_code_conf_t的数据结构主要用于装在Nginx的nginx.conf的核心配置文件的参数。后面我们会具体讲解配置文件nginx.conf的解析过程以及和模块。


1. 创建一个内存池。


后续所有的内存都会被分配到这个内存池上面。

2. 拷贝配置文件的路径前缀(/usr/local/nginx)


主要拷贝到 cycle->conf_prefix

3. Nginx的路径前缀拷贝


拷贝到cycle->prefix

4. 拷贝配置文件信息


/nginx/conf/nginx.conf 文件路径

5. 拷贝配置参数信息

6. 路径信息初始化

7. 初始化打开的文件句柄

8. 初始化shared_memory链表

9. 初始化listening数组

10. 模块创建和核心配置结构初始化ngx_core_conf_t


  • 主要初始化cycle->modules
  • 创建核心配置结构,Nginx的核心配置会放到ngx_core_conf_t *ccf数据结构上
  • 初始化核心配置结构ngx_core_conf_t *

11. 配置文件nginx.conf解析


配置文件解析会在下章中详细解读。

12. 创建PID文件


Nginx将PID写入文件内,/usr/local/nginx-1.4.7/nginx.pid,后续对Nginx进行重启、停止、信号操作就可以使用这个PID了。

13. 遍历cycle->open_files链表中的文件,并且打开


cycle->open_file主要是在ngx_conf_open_file这个方法里面放入文件路径,然后下面去打开文件。

主要是日志文件和配置文件。

14. 创建共享内存并初始化


新旧shared_memory链表的比较,相同的共享内存保留,旧的不同的共享内存被释放,新的被创建

15. 处理listening数组,并开始监听socket

16. 关闭或删除残留在old_cycle中的资源


  • 释放多余的共享内存;
  • 关闭多余的侦听sockets;
  • 关闭多余的打开文件

到此这篇ifstream的头文件(if_nametoindex头文件)的文章就介绍到这了,更多相关内容请继续浏览下面的相关推荐文章,希望大家都能在编程的领域有一番成就!

版权声明


相关文章:

  • prf离心分离步骤(prp离心分离步骤)2026-04-16 16:54:07
  • ceph存储的优点(cephrbd存储)2026-04-16 16:54:07
  • spring简单入门实例(spring入门教程)2026-04-16 16:54:07
  • treesizefree 安卓(treesoft下载)2026-04-16 16:54:07
  • pcl头文件(crol头文件)2026-04-16 16:54:07
  • store苹果商店为什么下载不了软件(在苹果商店为什么下载不了软件)2026-04-16 16:54:07
  • xprinter客服(xprinter客服电话多少)2026-04-16 16:54:07
  • red hat linux挂载u盘(linux挂载u盘exfat)2026-04-16 16:54:07
  • latex如何转换成word(latex转换为word)2026-04-16 16:54:07
  • treechada官网(treechada怎么样)2026-04-16 16:54:07
  • 全屏图片