您的位置:首页 > 其它

fcgx_accept_r 返回-88 我的解法

2015-08-24 14:49 239 查看
这个问题谈不上解法.

现象描述:

我突然发现我写的nginx+ fcgi的一个demo不能达到我的预期效果了.然后我打印出fcgx_accept_r ()的返回值后发现时-88,网上这方面的资料比较少,-88 你也不知道具体发生了什么.目前通过fcgi的文档了解到fcgx_accept_r ()该函数正确情况下返回0或者一个正值,错误情况返回-1.

我纠结了两天,毕竟我之前都运行好好的.结果:重启了一下安装了nginx的虚拟机,我的问题神奇般的解决了.我所写的demo如下:

#include "fcgio.h"
#include "fcgi_config.h"
#include <unistd.h>
#include <stdlib.h>
using namespace std;
int main()
{
FCGX_Request request;
int rc;

if(FCGX_Init()==-1)
{
cout<<"Init error!"<<endl;
return -1;
}

FCGX_InitRequest(&request,0,0);

streambuf * cin_streambuf  = cin.rdbuf();
streambuf * cout_streambuf = cout.rdbuf();
streambuf * cerr_streambuf = cerr.rdbuf();

while(1)
{
rc = FCGX_Accept_r(&request);
if(rc<0)
break;

fcgi_streambuf cin_fcgi_streambuf(request.in);
fcgi_streambuf cout_fcgi_streambuf(request.out);
fcgi_streambuf cerr_fcgi_streambuf(request.err);

#if HAVE_IOSTREAM_WITHASSIGN_STREAMBUF
cin  = &cin_fcgi_streambuf;
cout = &cout_fcgi_streambuf;
cerr = &cerr_fcgi_streambuf;
#else
cin.rdbuf(&cin_fcgi_streambuf);
cout.rdbuf(&cout_fcgi_streambuf);
cerr.rdbuf(&cerr_fcgi_streambuf);
#endif

char *query_string = FCGX_GetParam("QUERY_STRING", request.envp );
char *server_name = FCGX_GetParam("SERVER_NAME", request.envp);
if(query_string)
{
cout << "Content-type: text/html\r\n"
"\r\n"
"<TITLE>FINCHINA INFO</TITLE>\n"
"<H1>TEST</H1>\n"
"<H4>QUERY_STRING:"<<query_string <<"</H4>\n"
"<H4>SERVER_NAME:"<<server_name<<"</H4>\n";
}
FCGX_Finish_r(&request);
}
return 0;
}


希望有朋友遇到相同的问题的,在评论区一起讨论这个问题.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: