发布时间:2025-12-10 19:56:41 浏览次数:2
spawn-fcgi与fcgi[亲测有效]FCGI_Accept这个函数会基于FCGI_LISTENSOCK_FILENO监听套接字文件描述辅助进行accept,接着将accept到的连接设置到fcgi的输入输出文件描述符变量上,最后主流程就基于这个连接套接字进行与nginx服务器的socket数据通信。注意这里有个宏:FCGI_LISTENSOCK_FILENO,这个宏就是fcgi中监听套接字的文件描述符;函数创建监听套接字;
原理有两点:
子进程会继承父进程打开的文件描述符资源,从而将spawn-fcgi打开的监听套接字传递给fcgi; 利用宏定义重新架构fcgi的标准输入输出,从而将标准输入输出转变为对文件描述符的读写操作;首先通过bind_socket()函数创建监听套接字;
创建完毕监听套接字后就调用fcgi_spawn_connection()函数,该函数负责切换为对应的fcgi程序,以及重定向一些文件描述符:
// 如果fcgi_fd不是FCGI_LISTENSOCK_FILENO,那就通过dup2进行文件描述符的转变,核定一点的就是这个:if(fcgi_fd != FCGI_LISTENSOCK_FILENO) { close(FCGI_LISTENSOCK_FILENO); dup2(fcgi_fd, FCGI_LISTENSOCK_FILENO); close(fcgi_fd);} 是否还在为Ide开发工具频繁失效而烦恼,来吧关注以下公众号获取最新激活方式。亲测可用!
【正版授权,激活自己账号】:Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】:官方授权 正版激活 自己使用,支持Jetbrains家族下所有IDE…
注意这里有个宏:FCGI_LISTENSOCK_FILENO,这个宏就是fcgi中监听套接字的文件描述符;
FCGI_Accept这个函数会基于FCGI_LISTENSOCK_FILENO监听套接字文件描述辅助进行accept,接着将accept到的连接设置到fcgi的输入输出文件描述符变量上,最后主流程就基于这个连接套接字进行与nginx服务器的socket数据通信。