为什么mod_wsgi在Windows上不支持守护进程模式?

5
http://code.google.com/p/modwsgi/上可以看到这样一句话:

然而,mod_wsgi的守护进程模式只能在运行在UNIX上的Apache 2.0或2.2上使用,并且仅当支持线程的Apache运行时库已编译时才可用。

为什么Windows下不支持守护进程模式呢?

我在获取上述信息后发现了这个问题。

Invalid command 'WSGIDaemonProcess', perhaps misspelled or defined by a module not included in the server configuration

Apache出现错误。这不是模块包含的问题,因为WSGIScriptAlias指令可以正常工作。我猜测我得到的错误是由mod_wsgi维基上描述的限制引起的。

2个回答

7

Windows系统不提供类UNIX的fork()系统调用,因此无法在子进程继承父进程内存映像的情况下产生新进程。 Apache/mod_wsgi 需要使用 fork()。


我猜Apache使用Apache Portable Runtime库来处理某些操作系统中缺少fork()的情况,这似乎是一个理想的解决方案。在这里,APR被建议作为Windows上缺少fork()的解决方案。然而,我查看了APR的文档,发现它在Windows上并没有实现fork()。 - Piotr Dobrogost

2

对于那些在阅读Graham的答案后想要了解更多关于Windows上fork()的人,这里有一些相关问题:

Windows中最接近fork()的东西是什么?
在Windows中代替fork()的方法。
CreateThread与fork()的区别
Windows服务器应用程序的fork/chroot等效物
Microsoft Windows 7 POSIX实现目前处于何种状态?

上述线程中提到的两个有趣的事情是:

此外,我还问了一个问题:Interix是否实现了fork()?


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接