在<<C语言写cgi程序(上)>>中,我们大概知道了cgi的工作原理。今天我们看看c语言写的cgi,是怎么来处理数据的。
  c语言中,通过getenv("环境变量")函数来获取页面传送给cgi的数据,一般通过printf()返回给页面一些数据。
 其中C语言中的环境变量包括:
 HTTP-REFERER:调用该CGI程序的网页的URL。 
 REMOTE-HOST:调用该CGI程序的Web浏览器的机器名和域名。 
 REQUEST- METHOD:指的是当Web服务器传递数据给CGI程序时所采用的方法,分为GET和POST两种方法。GET方 法仅通过环境变量(如 QUERY-STRING)传递数据给CGI程序,而POST方法通过环境变量和标准输入传递数据给CGI程序,因此POST方法可较方便地传递较多的数 据给CGI程序。 
SCRIPT-NAME:该CGI程序的名称。 
QUERY-STRING:当使用POST方法时,Form中的数据最后放在QUERY-STRING中,传递给CGI程序。 
CONTENT-TYPE:传递给CGI程序数据的MIME类型,通常为〃applica tion/x-www-form-url encodede〃,它是从HTML Form中以POST方法传递数据给CGI程序的数据编码类型,称为URL编码类型。 

CONTENT-LENGTH:传递给CGI程序的数据字符数(字节数)。 

通过例子,可以更好的理解cgi和其工作原理。
1.搭建web服务器
我们选用的webServer是轻量级服务器mongoose。mongoose×××地址:http://pan.baidu.com/s/1mg0vs4w
mongoose是一个开源项目,有兴趣可以研究一下。
在Linux系统下编译源码:make linux
dA0DdVaKHQAA&ek=1&kp=1&pt=0&bo=XgI6AAAAA

通过运行命令./mongoose启动服务器或者./mongoose &后台运行。
输入http://IP:8080测试服务器:
dC9uu04sKgAA&ek=1&kp=1&pt=0&bo=4AFIAQAAA

2.编写index.html页面,代码如下:
dGyqO1jfDAAA&ek=1&kp=1&pt=0&bo=HQKnAAAAA

页面打开如下:
 dHOpp1dIFwAA&ek=1&kp=1&pt=0&bo=.AHRAAAAA


 3.编写我们的cgi程序
  dCYlr042KgAA&ek=1&kp=1&pt=0&bo=wAG7AAAAA
编译该程序生成cgi文件
dBTXRFjjDAAA&ek=1&kp=1&pt=0&bo=OQJSAAAAA

4.点击页面按钮,看下效果:
dLgce1aOHQAA&ek=1&kp=1&pt=0&bo=.wGcAAAAA
 
OK,一个简单的cig写完了,当然可以调用环境变量接收WEBSERVER传过来的数据,做更复杂的操作。