首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

用C语言开展CGI程序设计

2012-10-14 
用C语言进行CGI程序设计进公司不就,刚完成了公司交给的第一个跟嵌入式有关系的产品开发工作。本人Java Web

用C语言进行CGI程序设计

     进公司不就,刚完成了公司交给的第一个跟嵌入式有关系的产品开发工作。本人Java Web出身,具有传奇的求职经验(不为吹嘘,请大家不要为这句话纠缠不清),竟然稀里糊涂的就从一个做Java Web的,华丽的转身成为一个做跟我梦寐以求的嵌入式的人!废话太多不好,先总结一下这个产品开发中遇到的问题,供以后参考。
     公司是一个转型公司,最近几年才开始注重研发的。公司里面除了我是Java Web出身,其他技术研发的都是C的,刚进来鸭梨比较大,虽然自己有一定的C和C++基础。
     刚进来就是对公司产品的熟悉,读了一下源码(linux下,基本上都是C),感觉比较吃力,没过多久,老大就让我对公司一个产品的配置界面的进行改造,这个是需要直接放进flash中的,工程容量的最大允许量1M!由于刚开始没有进行深入的研究,一直秉承着做java web的思维,认为工程大小无所谓,反正是放在电脑上的,硬盘不够就扩容就行了。但是后来发现,嵌入式的产品对这个很敏感,在作设计的时候就应该考虑如何去给程序瘦身,如何去提高代码质量。
     花了差不多2个月的时间,将产品的改造初步完成,接下来就是一些很小的修修补补的事了,老大把剩下的事交给了一直跟我协作的那个人,让我开始投入到公司PBX相关的研究与开发中。
     公司PBX的东西,属于核心产品,我要做的第一件事就是将原有的配置界面的风格跟之前做的一个产品进行统一,(cgi(linux下c实现) + jquery)。又一次被打击:linux下开发,不停的vi,还有不得不去了解熟悉的lighttpd和cgi(c实现)的通信原理和深层次应用。之前大致对这个产品进行了分心,估计是要经历一次很痛苦的开发。。。
     不过,作IT的,注定了需要不断去学习。下面将我对cgi的一些了解写下来,欢迎同行们能拍砖。

      [color=olive]一,CGI概述
     CGI(公共网关接口)规定了Web服务器调用其他可执行程序(CGI)的接口协议标准。Web服务器通过调用CGI程序实现和Web浏览器的交互,也就是CGI程序接收Web浏览器发送给Web服务器的信息进行处理,将相应结果送给Web服务器及Web浏览器。CGI程序一般完成Web网页中表单数据的处理,数据库查询和实现与传统应用系统的集成等工作。CGI程序可以用任何程序设计语言编写,如shell、Perl、Fortran、Pascal、C等。但是用C语言编写的CGI程序具有执行快、安全性高(因为C语言程序是编译执行且不可被修改)等特点。
    
     CGI接口标准包括标准输入、环境变量、标准输出三部分。
     1. 标准输入
    
     CGI程序像其他可执行程序一样,可通过标准输入(stdin)从Web服务器得到输入信息,如Form中的数据,这就是萎缩的向CGI程序传递数据的POST方法。这意味着在操作系统命令行状态可执行CGI程序,并对CGI程序进行调试。(从开始接触嵌入式开始,你就该适应频繁跟操作系统,特别是unix和linux这样的东西打交道的环境)。POST方法是常用的方法,下面我将以此方法为例,分析CGI程序设计的方法、过程和技巧。
     
     2. 环境变量

     操作系统提供了许多环境变量,它们定义了程序的执行环境,应用程序可以存取它们。Web服务器和CGI接口又另外设置了一些环境变量,用来向CGI程序传递一些重要的参数。CGI的GET方法还通过环境变量QUERY-STRING向CGI程序传递Form中的数据。
    
     3. 标准输出
    
     CGI程序的标准输出(stdout)将输出信息传送给Web服务器。传送给Web服务器的信息可以用各种格式,通常以纯文本或者html文本的形式,这样我们就可以在命令行状态调试CGI程序,并且得到它们的输出。

     下面是一个简单的C实现的CGI程序,它将html中form的信息直接输出到Web浏览器。
     
    

     #include <stdio.h>     #include <string.h>     main()     {         printf("Contenttype:text/html\n\n");         printf("<html>\n");         printf("<head><title>An HTML Page From a CGI</title></h ead>\n″");         printf("<h2> This is an HTML page generated from with i n a CGI program..   .</h2>\n");         printf("<hr><p>\n");         printf("<a href="../output.html#two"><b> Go back to out put.html page <  /b></a>\n");         printf("</body>\n");         printf("</html>\n");         fflush(stdout);     }

    
[/color]

热点排行