如何中断libfcgi中的Accept方法?

Nik*_*Kim 5 c++ multithreading fastcgi

我正在使用 libfcgi (fcgiapp) 库编写 FastCGI 应用程序。问题出在FCGX_Accept_r方法内部,该方法等待传入连接并阻塞线程。正如我所看到的,它没有任何超时,因此程序流无法继续执行,直到请求到达。

我尝试FCGI_FAIL_ACCEPT_ON_INTR在方法中设置标志FCGX_InitRequest以使接受函数中断,但没有成功。

设置 FCGI_FAIL_ACCEPT_ON_INTR 可防止 FCGX_Accept() 在中断后重新启动。

我也尝试过拨打电话FCGX_ShutdownPending,但它似乎拒绝新的传入连接,并且不会停止侦听下一个连接。

阻止库接受任何新请求。信号处理程序安全。

你能告诉我还能做什么来打破FCGX_Accept_r等待吗?

小智 1

作为解决方法,只需关闭套接字:

FCGX_Request request;
// ...
close(request.listen_sock);
Run Code Online (Sandbox Code Playgroud)