GoAhead2.5源代码分析之9-cgi处理句柄(cgi.c)
2011-12-22 00:30
316 查看
cgi.c(cgi)
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程序
说明:设置该任务的标准输入、输出为stdIn、stdOut,创建环境变量,用envp对环境变量赋值,调用cgi处理函数entryAddr。
-----------------------------------------------------------------------------------------------------------------
int websCheckCgiProc(int handle)
功能:检查cgi任务是否存在
说明:
-----------------------------------------------------------------------------------------------------------------
相关文章推荐
- GoAhead2.5源代码分析之7-form请求处理(form.c)
- GoAhead2.5源代码分析之5-块分配模块(h.c和balloc.c)
- GoAhead2.5源代码分析之3-用户管理实例(umui.c)
- GoAhead2.5源代码分析之2-文件数据库(emfdb.c)
- GoAhead2.5源代码分析之1-用户管理(um.c)
- GoAhead2.5源代码分析之19-web层(webs.c)
- GoAhead2.5源代码分析之8-sym hash table(sym.c)
- GoAhead2.5源代码分析之6-访问验证(security.c)
- GoAhead2.5源代码分析之1-用户管理(um.c)
- BT源代码学习心得(八):跟踪服务器(Tracker)的代码分析(用户请求的实际处理) 转自CSDN:gushenghua的专栏
- 代码分析JAVA中PCM人声音频变声处理
- GO语言异常处理机制panic和recover分析
- GO语言异常处理机制panic和recover分析
- Openvswitch原理与代码分析(4):网络包的处理过程
- BT源代码学习心得(八):跟踪服务器(Tracker)的代码分析(用户请求的实际处理) - 转贴自 wolfenstein (NeverSayNever)
- eCos学习笔记之中断处理代码分析(转)
- GoAhead2.5源代码分析之4-用户管理用到的一些函数(uemf.c misc.c)
- Glusterfs (ls操作代码处理分析)
- goahead cgi 及出现的问题解决
- lighttpd与fastcgi+cgilua原理、代码分析与安装