#define ngx_get_conf(conf_ctx, module) conf_ctx[module.index]
ngx_process_t ngx_processes[NGX_MAX_PROCESSES]; //存储所有子进程的数组 ngx_spawn_process中赋值
ngx_process_t :
typedef struct {
ngx_pid_t pid; //进程ID
int status; //子进程退出后,父进程收到SIGCHLD后,开始waitpid,父进程由waitpid系统调用获取到的进程状态,见ngx_process_get_status
/*
这是由socketpair系统调用产生出的用于进程间通信的socket句柄,这一对socket句柄可以互相通信,目前用于master父进程与worker子进程问的通信,详见14.4节
*/
ngx_socket_t channel[2];//socketpair实际上是通过管道封装实现的 ngx_spawn_process中赋值
//子进程的循环执行方法,当父进程调用ngx_spawn_proces生成子进程时使用
ngx_spawn_proc_pt proc;
/*
上面的ngx_spawn_proc_pt方法中第2个参数雷要传递1个指针,它是可选的。例如,worker子进程就不需要,而cache manage进程
就需要ngx_cache_manager_ctx上下文成员。这时,data一般与ngx_spawn_proc_pt方法中第2个参数是等价的
*/
void *data;
char *name;//进程名称。操作系统中显示的进程名称与name相同
//一下这些前三个标记在ngx_spawn_process中赋值
unsigned respawn:1; //标志位,为1时表示在重新生成子进程
unsigned just_spawn:1; //标志位,为1时表示正在生成子进程
unsigned detached:1; //标志位,为1时表示在进行父、子进程分离
unsigned exiting:1;//标志位,为1时表示进程正在退出
unsigned exited:1;//标志位,为1时表示进程已经退出 当子进程退出后,父进程收到SIGCHLD后,开始waitpid,见ngx_process_get_status
} ngx_process_t;
本文详细介绍了 Nginx 中的进程管理机制,包括核心数据结构 ngx_process_t 的定义及其各个字段的作用,如进程 ID、状态、通信通道等,并解释了这些字段在 Nginx 子进程管理和通信中的作用。
1029

被折叠的 条评论
为什么被折叠?



