在带有mod_fastcgi的Windows服务器上使用apache,C代码如下所示:
void main() {
init();
while (FCGI_Accept() >= 0)
work();
cleanup();
}
当服务被删除时(即:net stop apache2),进程终止而不会获得清理代码。
我在这里缺少什么?
答案 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()”。