在基本http服务器中处理CGI请求
我正在用C编写一个基本的http服务器。处理一个简单的静态.html文件很容易,但我不知道如何处理动态的.pl.cgi文件扩展名在基本http服务器中处理CGI请求,c,httpserver,C,Httpserver,我正在用C编写一个基本的http服务器。处理一个简单的静态.html文件很容易,但我不知道如何处理动态的.pl.cgi文件扩展名 我知道我将不得不使用exec(),但我的问题是什么?看一下。特别是第4节“调用脚本”和第6节“CGI脚本的数据输入”。您需要为cgi脚本设置要读取的环境变量(查询字符串、脚本名称等)。HTTP服务器的作用是实现HTTP协议(基本上是位于TCP/IP之上的通信协议) 支持.pl、.cgi等是应用服务器的一个角色。有很多好例子。例如,在RubyonRails中,您可以使用
我知道我将不得不使用exec(),但我的问题是什么?看一下。特别是第4节“调用脚本”和第6节“CGI脚本的数据输入”。您需要为cgi脚本设置要读取的环境变量(查询字符串、脚本名称等)。HTTP服务器的作用是实现HTTP协议(基本上是位于TCP/IP之上的通信协议) 支持.pl、.cgi等是应用服务器的一个角色。有很多好例子。例如,在RubyonRails中,您可以使用web服务器(Apache/nginx)并在这些服务器后面运行Ruby解释器(实际上,这些解释器将处理内嵌Ruby代码的HTML)
你真的需要弄清楚你的目标是什么。是的,你应该打电话给exec。特别是,您可能需要运行一个shell,它将确定cgi程序是什么类型的脚本(例如perl、shell等)或二进制文件,并正确地执行它 通常的顺序是:使用pipe创建一些管道,fork生成新进程,dup2将stdin和stdout连接到管道,exec(运行新程序) 您可能会调用exec的execle变体。最后一个参数是cgi程序的一组环境变量。根据传入请求在cgi规范中设置名称-值对。它们的名称类似于
REQUEST\u METHOD
和QUERY\u STRING
接下来,将请求内容写入cgi的标准输入。例如,在POST的情况下,这将是请求参数字符串。最后,阅读标准并将其回显到浏览器中。我在学校时,它是“埃拉托什尼筛”或“烹饪容器数据库”。。那么现在是“http”服务器吗?@lexu我们正在变老。-1根据你的定义,Apache是一个“应用服务器”。IMO支持在这里的意思是“启用”,而不是“在http服务器中执行”。Apache不是应用服务器。它是一个web服务器。执行pl cgi etc需要一些执行环境。