Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/63.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在基本http服务器中处理CGI请求_C_Httpserver - Fatal编程技术网

在基本http服务器中处理CGI请求

在基本http服务器中处理CGI请求,c,httpserver,C,Httpserver,我正在用C编写一个基本的http服务器。处理一个简单的静态.html文件很容易,但我不知道如何处理动态的.pl.cgi文件扩展名 我知道我将不得不使用exec(),但我的问题是什么?看一下。特别是第4节“调用脚本”和第6节“CGI脚本的数据输入”。您需要为cgi脚本设置要读取的环境变量(查询字符串、脚本名称等)。HTTP服务器的作用是实现HTTP协议(基本上是位于TCP/IP之上的通信协议) 支持.pl、.cgi等是应用服务器的一个角色。有很多好例子。例如,在RubyonRails中,您可以使用

我正在用C编写一个基本的http服务器。处理一个简单的静态.html文件很容易,但我不知道如何处理动态的.pl.cgi文件扩展名


我知道我将不得不使用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需要一些执行环境。