码迷,mamicode.com
首页 > 移动开发 > 详细

fcgiapp

时间:2018-06-24 20:55:32      阅读:662      评论:0      收藏:0      [点我收藏+]

标签:内容   soc   程序   多线程安全   Opens   返回值   environ   释放   输出   

FCGX_Stream

该struct定义了FastCGI流的状态。流的状态是私有的,只能通过下面定义的程序访问

FCGX_Request

对一个请求的封装。可供访问的属性:
int requestId       // 是否线程独立?
int role;
FCGX_Stream *in;    // 在post方法中用来读取数据?
FCGX_Stream *out;      // 输出应答内容
FCGX_Stream *err;
char **envp;       // 系统 + Request的环境变量

int FCGX_Init()

Initialize the FCGX library.  Call in multi-threaded apps
before calling FCGX_Accept_r().
Returns 0 upon success.

int FCGX_InitRequest(FCGX_Request *request, int sock, int flags)

Initialize a FCGX_Request for use with FCGX_Accept_r().
参数sock是0(默认)或者是FCGX_OpenSocket()的返回值。
参数flags当前只支持FCGI_FAIL_ON_INTR(实现中并没有定义,都是使用0)。

int FCGX_Accept_r(FCGX_Request *request)

接受一个新的请求(多线程安全)。一定要先调用一次FCGX_Init()。
成功放回0,失败返回-1。

结束request(并释放上一次调用中申请的内存)。创建输入,输出,错误流,
并分别赋值给(request中的)*in,*out,*err。创建包含参数的数据结构,并赋值给*envp,
可以通过getenv(如果将数据赋值给了environ)或FCGX_GetParam来访问。

不要一直保留指向envp数组或其中字符串的指针(例如FCGX_GetParam返回的结果),
因为在下一次调用FCGX_Finish或FCGX_Accept之后,它们都会被freed。

不要直接使用FCGX_Request,他的结构可能改变。

int FCGX_PutS(const char *str, FCGX_Stream *stream)

将以NULL为结尾的字符串写入输出流。
正常情况返回写入的字节数(不包括最后的NULL),如果出错,返回EOF(-1)。

 

fcgiapp

标签:内容   soc   程序   多线程安全   Opens   返回值   environ   释放   输出   

原文地址:https://www.cnblogs.com/kohlrabi/p/9221413.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!