CGIC简明教程1:使用CGIC的基本思路
C语言编程是一项复杂且容易出错的工作,所以在完成复杂任务时,一定要选择合适的库。对于用C语言编写CGI程序则更是如此。CGIC是非常优秀的C语言CGI库函数。 其下载地址为:www.boutell.com/cgic/#obtain,现在的版本号是2.05。
本站从今天开始,将逐步介绍如何使用CGIC完成各种操作,也可以说是一个Tutorial。
(注:本系列涉及的编程环境都是Linux,Windows用户需要对用到的操作系统命令稍作修改)
本文纲要 :
CGIC的安装、测试安装、使用CGIC的基本思路;
1) CGIC的下载安装
cgic.h:头文件;
cgic.c:CGIC的源代码文件;
cgictest.c:CGIC库的作者提供的一个CGI程序例子;
capture.c:用于调试CGI程序的工具;
Makefile:安装CGIC的脚本文件;
可以看到,整个库实际上就是cgic.c一个文件,可以说是非常的精炼。
我们可以把CGIC安装为操作系统的一个动态链接库,这样我们每次编译的时候,就不需要有cgic.c这个源文件了。
但是由于需要(以后将会看到),我们将修改cgic.c代码,所以我们不把它安装进系统。每次编译的时候,只要把cgic.c和cgic.h放到当前文件夹就好了。
2) 测试安装
我们用他自带cgictest.c来实现自己的第一个C语言CGI程序。
你可以新建一个工作目录,用于存放你的CGI程序源代码,把cgic.h, cgic.c, cgictest.c三个文件拷贝到这个目录,然后建立一个Makefile文件,其内容为:
- test.cgi:cgictest.c cgic.h cgic.c
- gcc -wall cgictest.c cgic.c -o test.cgi
保存好Makefile的内容之后,执行make命令:
make
在你的网站根目录下建立一个cgi-bin目录(当然名字可以任意取,但作为习惯,一般叫做cgi-bin),然后在Apache的配置文件里赋予 其执行CGI代码的权限,权限修改完之后要重启Apache。完成之后,把刚才生成的test.cgi放到cgi-bin目录中。此时我们可以在浏览器中 输入以下地址进行访问:
http://127.0.0.1/cgi-bin/test.cgi
如果浏览器报错,那么多半是配置Apache的时候有些操作没有正确完成。
3) 使用CGIC的基本思路
另外一点就是,cgi程序输出HTML页面的方式都是使用printf把页面一行一行地打印出来,比如cgictest.c中的这一段代码:
fprintf(cgiOut, "<textarea NAME=\"address\" ROWS=4 COLS=40>\n");fprintf(cgiOut, "Default contents go here. \n");fprintf(cgiOut, "</textarea>\n");
这种方式与Java Servlet非常类似,Servlet也是通过调用打印语句System.out.println(…)来输出一个页面。(不过后来Java推出了JSP来克服这种不便。)
但是与Servlet不同的地方在于,使用C语言的我们还要自己输出HTML头部(声明文档类型):
cgiHeaderContentType("text/html");
void cgiHeaderContentType(char *mimeType) {
fprintf(cgiOut, "Content-type: %s\r\n\r\n", mimeType);}
fprintf(cgiOut, "Content-type: %s\r\n\r\n", mimeType);}
理解了这几点之后,你就可以编写自己的CGIC程序了。新建一个文件test.c试试:
下载: test.c
- #include <stdio.h>
- #include "cgic.h"
- #include <string.h>
- #include <stdlib.h>
- int cgiMain() {
- cgiHeaderContentType("text/html");
- fprintf(cgiOut, "<HTML><HEAD>\n");
- fprintf(cgiOut, "<TITLE>My First CGI</TITLE></HEAD>\n");
- fprintf(cgiOut, "<BODY><H1>Hello CGIC</H1></BODY>\n");
- fprintf(cgiOut, "</HTML>\n");
- return 0;
- }
此时通过浏览器访问,会在页面上看到一个大大的“Hello CGIC”。
没有评论:
发表评论