-
首先,之前的时候项目运行过程中,发现对于upload的cgi执行情况是:能够成功启动,但是对于返回的情况是错误的,发现是函数调用有问题:函数调用错误
-
然后去看了spawn-fcgi的源码,很短600多行,然后理解了一下工作原理。
-
首先他的主要原理就是:创建一个socket然后bind端口和开始监听等待(nginx来自于客户端的请求,在nginx.conf配置文件中配置好了的)然后开始创建fork一个子进程,然后将子进程的标准输入重定向到了监听的端口。然后父进程关闭。
如此方式,就能首先通过子进程监听的端口获取nginx的连接,然后通过重定向的方式将输出返回到这次的连接,也就是直达客户端。 -
函数:
dup2(int fd1, int fd2);
select() 这个io复用函数用来作为定时器
waitpid(child, &status, WNOHANG); 这个函数因为使用了 WNOHANG 参数,仅获取该进程的状态不用关闭。