2012年(27)
分类:
2012-10-31 11:01:31
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任务是否存在
说明:
-----------------------------------------------------------------------------------------------------------------