如何使用FCGI检测客户端终止的连接?

我有一个用C语言编写的FCGI应用程序。我们遇到客户端关闭活动连接的情况 – 即在页面加载期间离开页面 – 如果可能的话,我们希望在应用程序中检测到这一点。 我们的Web服务器(nginx)配置为在客户端连接意外关闭时关闭FCGI连接,所以我希望通过在事务结束时查看FCGI流状态,我们可能能够检测到客户端 -启动了封闭连接。

我的问题是:在调用FCGX_Finish_r()之前,是否可以在输出流上使用FCGX_GetError()检测到这一点? 如果没有,我怎么能陷入这样的状况呢?

我尝试在FastCGI邮件列表上询问,但似乎列表已关闭。

如果数据已通过套接字传输并发生错误, FCGX_GetError()将返回errno ,您也可以使用FCGX_PutStr() < 0检测到这一点。 libfcgi使用8192字节的大小在内部缓冲输出流,在FCGX_Finish_r()时传输任何剩余的缓冲区。

当客户端关闭连接时,您应该收到SIGPIPE。 通常,忽略此信号是安全的。 但是如果你需要检测这个,只需为SIGPIPE安装处理程序。