【问题标题】:Running C code using FastCGI & NGINX使用 FastCGI 和 NGINX 运行 C 代码
【发布时间】:2016-11-07 17:10:06
【问题描述】:

我正在尝试使用 FastCGI 和 NGINX 运行 C 代码。现在,按照本网站中的所有步骤操作后:http://chriswu.me/blog/writing-hello-world-in-fcgi-with-c-plus-plus/

我正处于即将产生 fcgi 的一步。但是,我必须使用的系统是 32 位系统,其中不支持 sudo apt-get install 等命令。我尝试从我的 64 位系统复制 spawn-fcgi 二进制文件并尝试使用这样的:./spawn-fcgi -p 8000 -n hello_world 命令,但它给我一个错误,说它无法执行二进制文件(我假设这是因为我支持尝试使用它时确保在 32 位系统上)。事实上,当我执行file spawn-fcgi 时,它告诉我它是一个 64 位 LSB 可执行文件,而当我在 32 位系统上运行它时,这就是出现“无法执行二进制文件”错误的原因。

我想知道的是,我是否可以使用 FASTCGI 运行 C 脚本而无需调用 spawn-fcgicgi-fcgi,或者无论如何我可以使用某种方式以 32 位获取这些二进制文件。我尝试在线搜索 FASTCGI 的 32 位下载,但似乎 fastcgi.com 已损坏,因为我无法访问该网站。

如果我遗漏了任何重要信息,请告诉我,我很乐意提供。谢谢!

【问题讨论】:

  • 让我们从应用程序开始下载是 C++ 而不是 C。那么您使用的是什么操作系统。有关如何进行下载的参考网页需要的是 linux 操作系统,而不是 windows。问题是关于 C 的,但引用的网页是关于 C++
  • 对不起,我提供了错误的链接。我使用的是stackoverflow.com/questions/2149709/…,并且能够在我的 Ubuntu mac 上运行 C 脚本,但现在我正在一个不同的只有 32 位的 Linux 环境中进行开发。

标签: c nginx fastcgi


【解决方案1】:

通过使用<fcgiapp.h> 标头提供的API,您可以指定套接字详细信息,通过外部方式生成 为您完成。

你可以像这样得到一个 TCP 套接字文件描述符:

int sockfd = FCGX_OpenSocket("127.0.0.1:9000", 100);

...或使用 Unix 套接字:

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-fcgicgi-fcgi

【讨论】:

    猜你喜欢
    • 2016-11-13
    • 1970-01-01
    • 1970-01-01
    • 2011-10-26
    • 2010-09-27
    • 1970-01-01
    • 1970-01-01
    • 2012-06-06
    • 1970-01-01
    相关资源
    最近更新 更多