fcgx_accept_r 返回-88 我的解法

来源:互联网 发布:小学生口算软件 编辑:程序博客网 时间:2024/05/03 09:38

这个问题谈不上解法.

现象描述:

我突然发现我写的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;}

希望有朋友遇到相同的问题的,在评论区一起讨论这个问题.

0 0
原创粉丝点击