该主题的所有示例均基于某些 C/C++ 库,如 fcgi_stdio 和类似库。但是我想使用汇编语言制作一个 FastCGI 脚本,但没有这样的库。
几乎所有关于协议(protocol)和通信的内容都清楚了,但我仍然无法理解程序如何获得 Web 服务器传递的监听套接字的句柄?
我的发现:
我安装了 lighttpd 服务器并尝试配置它以使 fastCGI 与我的程序一起工作。
但我很困惑,配置文件需要“host”和“port”——这是否意味着 FastCGI 应该自己创建监听套接字?我的意思是使用 socket/bind/listen/accept 函数?那么我的应用程序将如何知道这些主机和端口参数。它们在 Web 服务器配置文件中?
lighttpd 允许的另一种方式是指定一些命名的套接字路径 - 例如“/tmp/myapp.socket”。我的应用程序必须如何处理这个?它如何知道这条路径?
我尝试使用 accept(0, ...) 编写一些小程序,如@user58697 在他的回答中指定的那样(这个答案符合官方的 FastCGI 规范!)不幸的是什么都没有发生 - 调用 accept 惨遭失败!
那么,通信是特定于服务器的吗?
最佳答案
根据spec ,从应用程序的角度来看,FCGI_LISTENSOCK_FILENO 等于 STDIN_FILENO,它被定义为 0。这意味着你应该 accept(STDIN_FILENO, ...)
甚至 accept(0, ... )
。
关于c++ - FastCGI 应用程序 - 如何获取监听套接字句柄?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23017849/