Nginx在启动流程中会调用ngx_os_init来初始化一些与操作系统有关的全局变量,不同操作系统下ngx_os_init的实现不同,在os/unix下我们看到Nginx为linux、freebsd、solaris等操作系统实现了对应的ngx_os_init函数。下面以linux操作系统进行讲解:
/* os/unix/ngx_posix.c */
ngx_int_t ngx_ncpu;
ngx_int_t ngx_max_sockets; // 用于记录可持有的最大套接字描述符数量
ngx_int_t ngx_inherited_nonblocking;
struct rlimit rlmt;
void ngx_signal_handler(int signo);
typedef struct {
int signo;
char *signame;
void (*handler)(int signo);
} ngx_signal_t;
ngx_signal_t signals[] = {
{ ngx_signal_value(NGX_RECONFIGURE_SIGNAL),
"SIG