答案1
你所说的“CGI Process”就是CGI程序。 CGI 程序可以是任何语言的脚本或已编译的可执行文件。
操作系统如何实际执行 CGI 程序代码的详细信息(步骤 2、3、4 和 5)对于理解 CGI 的工作原理并不真正必要。
我是这样想的(您的步骤 2-5 在此处被压缩到步骤 2):
- Apache 收到请求 - 认为这是对 CGI 程序的请求
- Apache 执行 CGI 程序,将请求中的参数传递到环境中的 CGI 程序(作为环境变量)。
- CGI 程序从环境中获取参数,执行任何所需的处理,并将网页写入标准输出。
- Apache 从 CGI 程序的标准输出接收网页并将其传输到 Web 客户端(通常是您的 Web 浏览器)。
您在步骤 2-5 中讨论的大部分细节都包含在execve
手册页中(在 Linux 上包含工作代码示例):man 2 execve
。您可能还想看看fork
。这已经脱离了 CGI 的主题,进入了 Unix 进程模型的主题。最好稍后再回答另一个问题。
有关 CGI 的准确详细描述,请参阅规范的互联网草案:
WWW 通用网关接口版本 1.1
也可以看看
Apache 教程:使用 CGI 的动态内容
答案2
我所见过的 CGI 工作原理最好的解释之一就是这本书