我正在尝试使用FastCGI和NGINX运行C代码。现在,在遵循这个网站中的所有步骤之后:http://chriswu.me/blog/writing-hello-world-in-fcgi-with-c-plus-plus/
我就在准备产卵的那一步。但是,我必须使用的系统是一个32位系统,其中不支持sudo apt安装之类的命令。我尝试从我的64位系统中复制派生-fcgi二进制文件,并尝试使用这样的方式:./spawn-fcgi -p 8000 -n hello_world命令,但是它给了我一个错误,它说它不能执行二进制文件(我假设它是因为当我尝试使用它时,它肯定在32位系统上)。事实上,当我执行file spawn-fcgi时,它告诉我它是一个64位的LSB可执行文件,当我在32位系统上运行它时,这就是为什么“无法执行二进制文件”错误存在。
我想知道的是,我是否可以在不调用spawn-fcgi或cgi-fcgi的情况下使用FASTCGI运行C脚本,或者如果存在,我可以使用32位的二进制文件。我试着在网上搜索FASTCGI的32位下载,但似乎fastcgi.com坏了,因为我无法访问该网站。
如果我遗漏了任何重要的信息,请告诉我,我很乐意提供。谢谢!
发布于 2017-06-13 08:36:19
通过使用<fcgiapp.h>头提供的API,您可以指定套接字细节,这是通过外部方式生成的。
您可以获得这样的TCP套接字文件描述符:
int sockfd = FCGX_OpenSocket("127.0.0.1:9000", 100);
使用Unix套接字的...or:
int sockfd = FCGX_OpenSocket("/var/run/fcgi.sock", 100);
有了套接字,您就可以:
FCGX_Request req;
FCGX_InitRequest(&req, sockfd, 0);
while (FCGX_Accept_r(&req) >= 0) {
FCGX_FPrintF(req.out, "Content-Type: text/html\n\n");
FCGX_FPrintF(req.out, "hello world");
FCGX_Finish_r(&req);
}编译后,可以直接执行二进制文件,而无需使用spawn-fcgi或cgi-fcgi。
https://stackoverflow.com/questions/38210627
复制相似问题