2011-07-11 62 views
0

我有一个用C编写的FCGI应用程序。我们有一些客户端关闭活动连接的情况 - 如果可能,在页面加载期间离开页面 - 我们希望在应用程序内检测该页面。我们的网络服务器(nginx)配置为在客户端连接意外关闭时关闭FCGI连接,所以我希望通过在事务结束时查看FCGI流状态,我们可能会能够检测到客户端启动的关闭连接。如何使用FCGI检测客户端终止的连接?

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

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

回答

0

如果数据已经在插座传送和发生了错误,FCGX_GetError()将返回errno,你也可以检测到这种使用FCGX_PutStr() < 0。 libfcgi使用8192字节的大小在内部缓冲输出流,当调用FCGX_Finish_r()时,发送任何剩余的缓冲区。

0

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

相关问题