最近公司开发的一个项目要用到CGI,以前一直都是用PHP,没怎么接触过CGI。因为程序要放到嵌入式设备运行,所以要求执行效率要快,经过一番调研之后,决定用C语言来写CGI程序,为了开发方便,我选用了CGIC库。
首先到官方网站上下载CGIC库的最新版,目前最新版为CGIC205,下载地址: http://www.boutell.com/cgic/
注:我第一次上去找了很久都没找到下载链接,没办法,英文不好。后来慢慢找才找到,原来下载地址在比较靠下面才见到: 看到这两个就是啦。
CGIC库的使用相当方便,我下载的是tar.gz那个包,下载完成后运行如下命令:
# tar zvf cgic205.tar.gz
# cd cgic205
# make
然后就会产生两个文件:capture 和 cgictest.cgi 把这两个文件拷到你的网站目录下面,再用浏览器打开cgictest.cgi。如果你的WEB服务支持CGI,则应该可以正常显示,如果不行则要配置你的WEB服务器支持CGI,配置方法可以参考我的日志中名为“ ubuntu7.04下apache2+mysql5+php5+phpMyAdmin安装与配置 ”的文章。
如果一切正常后最好看一下cgictest.c源文件,里面的内容很简单,看完之后应该对CGIC库了解得差不多了。
顺便提一下,CGIC库中只说到接收使用POST方法方法提交的表单,至于使用GET方法的则没有细说,在C语言中可以这样获得使用GET方法传过来的表单:
url: http://localhost/test.cgi?page=3
则text.cgi中可以这样获得page参数的值
int main(){
int page ; //分页显示
if( getenv("QUERY_STRING") ){
char *get_str;
get_str = getenv( "QUERY_STRING" );
if(sscanf(get_str,"page=%d",&page)!=1){
page = 1;
}
}
}
总之使用getenv()可以获得CGI的环境变量,使用sscanf()可以格式化字符串,理解运用这两个函数即可
首先到官方网站上下载CGIC库的最新版,目前最新版为CGIC205,下载地址: http://www.boutell.com/cgic/
注:我第一次上去找了很久都没找到下载链接,没办法,英文不好。后来慢慢找才找到,原来下载地址在比较靠下面才见到: 看到这两个就是啦。
CGIC库的使用相当方便,我下载的是tar.gz那个包,下载完成后运行如下命令:
# tar zvf cgic205.tar.gz
# cd cgic205
# make
然后就会产生两个文件:capture 和 cgictest.cgi 把这两个文件拷到你的网站目录下面,再用浏览器打开cgictest.cgi。如果你的WEB服务支持CGI,则应该可以正常显示,如果不行则要配置你的WEB服务器支持CGI,配置方法可以参考我的日志中名为“ ubuntu7.04下apache2+mysql5+php5+phpMyAdmin安装与配置 ”的文章。
如果一切正常后最好看一下cgictest.c源文件,里面的内容很简单,看完之后应该对CGIC库了解得差不多了。
顺便提一下,CGIC库中只说到接收使用POST方法方法提交的表单,至于使用GET方法的则没有细说,在C语言中可以这样获得使用GET方法传过来的表单:
url: http://localhost/test.cgi?page=3
则text.cgi中可以这样获得page参数的值
int main(){
int page ; //分页显示
if( getenv("QUERY_STRING") ){
char *get_str;
get_str = getenv( "QUERY_STRING" );
if(sscanf(get_str,"page=%d",&page)!=1){
page = 1;
}
}
}
总之使用getenv()可以获得CGI的环境变量,使用sscanf()可以格式化字符串,理解运用这两个函数即可