嵌入式开发之cgic库---cgi库的使用

很幸运!用C语言写CGI程序还可以有比较简单的方式,那就是我们可以借助使用第三方库CGIC(CGIC是一个功能比较强大的支持CGI开发的标准C库,并支持Linux, Unix 和Windows等多操作系统)来编写,省去了必须自己去遵循CGI规范来码砖的痛苦,使CGI程序的编写变的简单,下面是我第一次使用CGIC库来写的第一个CGI程序:
第一步:从cgic官网(http://www.boutell.com/cgic/ 此网站好像不稳定,偶尔能开)上下载cgic库文件
第二步:在Dev-C++中创建一个console工程,起名为 cgic1
把cgic.h、cgic.c 拷贝到工程cgic1源码文件所在的目录下,然后改写main.c如下:
获取请求中的参数值,我们在提交一个表单(form)时,怎样把表单内的值提取出来呢?比如下面这个表单:
<form action="cgi-bin/cgic1.cgi" method="POST">
    <input type="text" name="name" />
    <input type="text" name="number" />
    <input type="submit" value="Submit" />
</form>
当out.cgi收到请求时,需要把输入框“name”和输入框“number”内的值提取出来,而且不管form中的action是GET还是POST,都要有效。 
下面给出示例代码(文件为cgic1.c):
#include <stdio.h>
#include "cgic.h"
#include <string.h>
#include <stdlib.h>
int cgiMain() {
    char name[241];
    char number[241];
    cgiHeaderContentType("text/html");
    fprintf(cgiOut, "<HTML><HEAD>\n");
    fprintf(cgiOut, "<TITLE>My CGI</TITLE></HEAD>\n");
    fprintf(cgiOut, "<BODY>");
    cgiFormString("name", name, 241);
    cgiFormString("number", number, 241);
    fprintf(cgiOut, "<H1>%s</H1>",name);
    fprintf(cgiOut, "<H1>%s</H1>",number);
    fprintf(cgiOut, "</BODY>\n");
    fprintf(cgiOut, "</HTML>\n");
    return 0;
}
上面代码涉及到的cgic函数,可顾名思义,很简单不解释了,比直接用c写简洁很多,更详细的cgic库用法可上其官网查询。结果测试运行正常!
注:编译时候,出了个错误,报指向 cgic.c 中引入的某个头文件找不到,还以为windows平台下不能运行cgic或是我下载的版本不对,因为官网打不开,上面的cgic.h、cgic.c是在源码搜索网站http://code.ohloh.net/ 下找到的,下载的cgic库可能被别人改过,后来重新搜索,下载了另一个cgic库,编译通过!
参考http://blog.chinaunix.net/uid-20620288-id-3139686.html

http://blog.csdn.net/ajrm0925/article/details/8813384

http://blog.csdn.net/tiantang46800/article/details/7530930 cgic库的移植和使用

时间: 2024-08-24 17:49:00

嵌入式开发之cgic库---cgi库的使用的相关文章

嵌入式开发之davinci--- ccs 编译lib库

(1)ccs 简介 (2)ccs 输出格式coff elf (3)ccs 编译lib 算法库 (4)ccs 存在的问题 --------------------------------------------------华丽的分界线 --------------------------------author:pkf ---------------------------------------time:5-13 -----------------------------------------

嵌入式开发之GCC编译器使用

嵌入式开发之GCC编译器使用 Linux系统下GCC是GNU推出的功能强大的性能优越的多平台编译器,是GNU的代表作之一.GCC 可以在多种硬件平台上编译出可执行程序,其执行效率一般比其他编译器高%20到%30.GCC编译器能将C C++语言程序汇编程序编译,链接成可执行程序.在linux文件没有统一的后缀,系统从文件的属性来区分可执行程序和不可执行程序.  1.1GCC编译程序的四个阶段 预处理(Pre-Processing) 编译(Comping) 汇编(Assembing) 连接(Link

嵌入式开发之 STM32自行车码表(图文)

笔者将从以下几个方面逐步深入地讲解STM32F103C8开发板的使用,并在Windows下编写一个简单的自行车码表程序: 元器件 环境搭建 电路连接 一个简单的LED闪烁程序 自行车码表 准备工作之 元器件 准备工作之 电路连接 准备工作之 环境搭建 CubeMX配置 KeilST-LINK下载程序调试程序 下载并注册安装Keil Keil安装程序及注册机 用keil打开CubeMX生成的工程文件 build keilST-LINK下载和调试以blink为例 出错误了 解决方法一 解决方法二 连

嵌入式开发之davinci--- 8148/8168/8127 中的High-DefinitionVideo Processing Subsystem (HDVPSS)

High-DefinitionVideo Processing Subsystem (HDVPSS) 这一章介绍了高清视频处理子系统(HDVPSS). 2.1导论 2.1.1 简介 HDVPSS 使用TI开发的算法,灵活的复合和融合引擎,各种高质量外部视频接口,实现视频/图像显示和采集处理功能.   2.1.3 缩略语 名称 定义 COMP Compositor 复合器 DEI De-Interlacer 去隔行 DEIH High quality De-Interlacer 高质量去隔行 DV

嵌入式开发之davinci--- DVRRDK, EZSDK和DVSDK这三者有什么区别

下载的时候选择信息要避免security类型的产品,这个是要审查的. DVRRDK是专门针对DVR的开发包是非公开的,针对安防的客户定制的,效率要高. EZSDK是开放的版本架构上使用openmax可以为android提供支持 DVSDK是老的版本名称使用codec engine架构,现在新的芯片DM8xxx都是EZSDK了 三种不同的软件框架,使用不同的方法来利用dsp工作. http://blog.csdn.net/zhouzhuan2008/article/details/8512128

嵌入式开发之web服务器---boa移植

近段时间在做ti8148的编解码器又涉及到boa web服务器的移植.在移植到ARM开发板的过程中,遇到很多的问题.原先的自带thttpd 由于功能没有boa完善,比如在ubuntu下面的utf-8编码的网页在thttpd中给客户浏览器显示的是默认ios欧洲乱码,但是boa显示正常,就干掉了 现将移植步骤整理如下:(其中涉及到个人习惯和路径问题,视各自情况而定) 1.下载源码: 下载网址http://www.boa.org/boa-0.94.13.tar.gz,但实际上下载的包为boa-0.94

嵌入式开发之davinci--- 8148/8168/8127 中的xdc 简介

XDC是TI公司为嵌入式实时系统可重用软件组件(在XDC里被成为packages,以下成为包)制定的一套标准.它包括一些有用的工具,标准的API函数,静态配置文件和打包(packaging)操作.XDC最主要的亮点在于它标准化了传递过程,并简化了在应用程序中引用目标平台下其他包的过程. 本文从一个简单的“Hello,World“入手,引领大家进入XDC开发世界. 在XDC开发世界中,首先需要明确两个概念,package和repository. 所谓package,类似与java里的jar文件或.

嵌入式开发之hi3519---GPIO 驱动

在一个嵌入式系统中使用最多的莫过于 通用输入输出 GPIO口.看到论坛中经常有朋友问海思为什么没有提供GPIO驱动.其实不然. 在海思SDK  xxx/osdrv/tools/board_tools/reg-tools-1.0.0/source/tools/下 提供了himm的读写工具源码.你也可以根据himm的源码来写一个文件设备操作的驱动.毕竟轮子已经有了,我们就没必要再去造轮子了. 这个工具是用来 配置海思寄存器的.当然可以稍加改造或者在应用直接使用来控制通用寄存器. 根据海思提供资料 ,

嵌入式开发之hi3516---GV7601 SPI通信问题

http://blog.csdn.net/qq_29350001/article/details/52669964 http://blog.csdn.net/zqj6893/article/details/50386921 http://blog.csdn.net/yangzhongxuan/article/details/8021743 http://www.ebaina.com/bbs/thread-5035-1-1.html