Tiny通过派生一个子进程并在子进程中运行一个CGI程序,来提供各种类型的动态内容。
程序中首先发送一个表明成功的响应行,同时还包括带有信息的Server报头给客户端。CGI程序负责发送响应的剩余部分。
然后我们派生一个子进程,子进程用来自请求URI的CGI参数初始化QUERY_STRING环境变量,CGI程序会通过这个变量获取CGI参数值。接下来,子进程重定向标准输出到已连接文件描述符,然后加载并运行CGI程序。因为CGI程序运行在子进程的上下文中,它能够访问所有在调用execve函数之前就存在的打开文件和环境变量。因此CGI程序写到标准输出上的数据都会直接送到客户端进程,不会受到来自父进程的干涉。旗舰父进程阻塞在wait()的调用中,当子进程终止时,回收操作系统分配给子进程的资源。
Tiny Web服务器代码分析(3)
内容版权声明:除非注明,否则皆为本站原创文章。
转载注明出处:https://www.heiqu.com/590db02cf626d91f307c850cce3d03a9.html