现在的位置: 首页 > 综合 > 正文

GoAhead2.5源代码分析之9-cgi处理句柄(cgi.c)

2012年06月07日 ⁄ 综合 ⁄ 共 1849字 ⁄ 字号 评论关闭

cgi.ccgi

int websCgiHandler(webs_t wp, char_t *urlPrefix, char_t *webDir, int arg, char_t *url, char_t *path, char_t* query)

功能:处理cgi请求。

说明:

1.       抽出页面上form中调用的cgi程序的名字,构建完整的路径/ata0/webs/www/*

2.       进入到cgi程序所在的目录,即/ata0/webs/www

3.       分配内存,建立cgi程序的参数,主要是从也空格分割的qurey中提取出来

4.       cgi的环境变量中,构建名、值对。

5.       确定标准输入、输出。标准输出是个临时文件。

6.       调用websLaunchCgiProc,建立cgi处理程序。

-----------------------------------------------------------------------------------------------------------------

 

void websCgiGatherOutput (cgiRec *cgip)

功能:将临时文件中的内容输出到浏览器上。

说明:也就是将cgi程序prinf出的内存到临时文件,然后读取临时文件中的内容到浏览器上。

-----------------------------------------------------------------------------------------------------------------

 

void websCgiCleanup()

功能:调用websCgiGatherOutput处理输出,清空cgi所占用的资源

说明:

-----------------------------------------------------------------------------------------------------------------

 

char_t *websGetCgiCommName()

功能:临时文件名

说明:

-----------------------------------------------------------------------------------------------------------------

 

int websLaunchCgiProc(char_t *cgiPath, char_t **argp, char_t **envp, char_t *stdIn, char_t *stdOut)

功能:cgi处理程序。

说明:

1.       根据cgiPath,卸载已有的module

2.       查找_www_cgientry的对应值,找到就将值赋给entryAddr,生成任务vxWebsCgiEntry

3.       如果找不到,就加载cgiPath,生成任务vxWebsCgiEntry

-----------------------------------------------------------------------------------------------------------------

 

static void vxWebsCgiEntry(void *entryAddr(int argc, char_t **argv), char_t **argp, char_t **envp, char_t *stdIn, char_t *stdOut)

功能:cgi程序的外壳,都是通过调用它,来调用cgi程序

说明:设置该任务的标准输入、输出为stdInstdOut,创建环境变量,用envp对环境变量赋值,调用cgi处理函数entryAddr

-----------------------------------------------------------------------------------------------------------------

 

int websCheckCgiProc(int handle)

功能:检查cgi任务是否存在

说明:

-----------------------------------------------------------------------------------------------------------------

 

抱歉!评论已关闭.