FastCGI清理代码在Windows下不起作用

时间:2009-03-19 11:14:28

标签: c++ c windows apache fastcgi

在带有mod_fastcgi的Windows服务器上使用apache,C代码如下所示:

void main() {
    init();
    while (FCGI_Accept() >= 0)
        work();
    cleanup();
}

当服务被删除时(即:net stop apache2),进程终止而不会获得清理代码。

我在这里缺少什么?

2 个答案:

答案 0 :(得分:4)

看来,从阅读FCGI_Accept联机帮助页和FCGI_Accept {{1}}没有{{1}}实际上,在Apache关闭的情况下返回-1。尝试为SIGUSR1和SIGTERM设置信号处理程序。有一个例子(不是Windows特定的,但值得一试)前一段时间发布this FAQ entry

答案 1 :(得分:0)

过早退出的唯一方法是在work()内部调用“exit()”(或FCGI_Accept()...)

修改

如果您认为它可能是FCGI_Accept(),请尝试使用onexit()来设置从“exit()”调用的回调。至少这将确认过早地调用“exit()”。