goahead如何使用cgi服务_GoAhead2.5源代码分析之9-cgi处理句柄(cgi.c)
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任务是否存在
说明:
-----------------------------------------------------------------------------------------------------------------
goahead如何使用cgi服务_GoAhead2.5源代码分析之9-cgi处理句柄(cgi.c)相关推荐
- Android应用程序绑定服务(bindService)的过程源代码分析
Android应用程序组件Service与Activity一样,既可以在新的进程中启动,也可以在应用程序进程内部启动:前面我们已经分析了在新的进程中启动Service的过程,本文将要介绍在应用程序内部 ...
- 区块链教程Fabric1.0源代码分析流言算法Gossip服务端二
区块链教程Fabric1.0源代码分析流言算法Gossip服务端二 Fabric 1.0源代码笔记 之 gossip(流言算法) #GossipServer(Gossip服务端) 5.2.commIm ...
- c语言传奇引擎源码,Ei3.0服务端引擎源代码+登陆网关+客户端插件
Ei3.0服务端引擎源代码+登陆网关+客户端插件 procedure TPANEL.Button3Click(Sender: TObject); var P:integer; mItem:DWORD; ...
- java游戏刀剑_Game_rc 刀剑无双服务端后端源代码,完美编译运行,javawanmeiyunxing Engine 游戏引擎 267万源代码下载- www.pudn.com...
文件名称: Game_rc下载 收藏√ [ 5 4 3 2 1 ] 开发工具: Java 文件大小: 8214 KB 上传时间: 2016-12-01 下载次数: 0 提 供 者: 王文文 ...
- Active Directory服务接口完整源代码,组COM接口
Active Directory服务接口完整源代码,组COM接口 Active Directory服务接口(ADSI)是一组COM接口,用于访问来自不同网络提供商的目录服务的功能.ADSI用于分布式计 ...
- gossip 区块链_区块链教程Fabric1.0源代码分析流言算法Gossip服务端一兄弟连区块链教程-阿里云开发者社区...
区块链教程Fabric1.0源代码分析流言算法Gossip服务端一,2018年下半年,区块链行业正逐渐褪去发展之初的浮躁.回归理性,表面上看相关人才需求与身价似乎正在回落.但事实上,正是初期泡沫的渐退 ...
- Android系统默认Home应用程序(Launcher)的启动过程源代码分析
在前面一篇文章中,我们分析了Android系统在启动时安装应用程序的过程,这些应用程序安装好之后,还需要有一个Home应用程序来负责把它们在桌面上展示出来,在Android系统中,这个默认的Home应 ...
- Android应用程序进程启动过程的源代码分析(1)
Android应用程序框架层创建的应用程序进程具有两个特点,一是进程的入口函数是ActivityThread.main,二是进程天然支持Binder进程间通信机制:这两个特点都是在进程的初始化过程中实 ...
- CASSINI源代码分析
CASSINI源代码分析 2004-11-10 http://blog.csdn.net/shanhe/ 为什么要分析CASSINI? Cassini(卡西尼)是asp.net上的一个开源项目.主要给 ...
- Android系统Surface机制的SurfaceFlinger服务的线程模型分析
在前面两篇文章中,我们分析了SurfaceFlinger服务的启动过程以及SurfaceFlinger服务初始化硬件帧缓冲区的过程.从这两个过程可以知道,SurfaceFlinger服务在启动的过程中 ...
最新文章
- 资深SAP专家谈如何深入SAP开发
- seo说_百度指数看世间沉浮_如何快速排名-互点快速排名_网站关键词排名常见问题 - 搜狗快速排名...
- Chrome插件-新浪微博阅读器
- Servlet HTTP Status 405 - HTTP method GET is not supported by this URL
- 想要阅读一些开源项目或框架的源代码,不知道从哪里入手?
- 【HDU - 5943】Kingdom of Obsession(数论,素数间隔结论,构造,思维,匈牙利算法,匹配问题)
- C语言入门I love China,C语言从入门到精通
- go-elasticsearch: Elastic官方的Go语言客户端
- ce修改服务器的数据库,数据库服务器的调优步骤
- pythonname是什么意思_浅析Python __name__ 是什么
- CentOS7.5下KVM虚拟机安装
- iOS和安卓合并二维码
- java实现跟踪 物流管理_基于jsp的物流跟踪-JavaEE实现物流跟踪 - java项目源码
- Java实现 | 基于朴素贝叶斯的情感词分析
- 淘宝API item_history_price - 获取商品历史价格信息
- laragon mysql版本_laragon 使用(php版本升级切换)
- 卷积神经网络前向及反向传播过程数学解析
- 「Python」Mac下pip出现command not found和Could not find a version that satisfies the requirement ...解决方式
- 神器-可视化分析之Basemap实战详解(二)
- java输出小数_java输出保留小数点
热门文章
- FZU 2037 Maximum Value Problem【递推】
- error Code:410 Error Message:appid and openid not match 威富通技术支持,兴业银行微信支付接入支持
- 下载抖音无水印视频的微信小程序
- 靠谱助手微信版 v1.0 pc版
- 使用bootstrap打造卡片个人简历
- C# HttpServer 框架
- QNX系统将C/C++代码编译为lib***.so文件
- 一篇文章带你搞懂DEX文件的结构
- 软件开发的版本控制管理
- linux 下修改文件夹的用户权限和所属组,为文件建立软连接