在查看一些实现 FastCGI 客户端的示例时,我遇到了一些奇怪的代码。
#include <fcgi_stdio.h>
#include <stdlib.h>
int main(void) {
while(FCGI_Accept() >= 0)
printf("Content-type: text/html\r\n\r\n"
"Got a <i>%s</i> request\n",
getenv("REQUEST_METHOD"));
return 0;
}
对我来说,看起来该进程总是会获得相同的值getenv(...)
,但似乎其目的是从父进程读取数据。
子进程运行时父进程可以更新子环境吗?
答案1
不。
但是该FCGI_Accept()
函数可以在每次调用时更新当前进程的环境(C 库的副本),这当然就是它的作用。
确实,不保留调用结果getenv()
是具体来说在该函数的 doco 中调用。这样你就可以计算出这个页面上有多少人阅读了 doco。 (-:
进一步阅读
FCGI_Accept
。 FCGI手册。 Open Market, Inc.。1996 年。存档于 opensource.apple.com。