用Cygwin从Windows运行fork(2)。 可能?

我正在尝试使用一个名为shotgun的Ruby gem,它需要fork(2)命令,我发现它是一个Linux命令,可能在Cygwin中可用。 是否有可能通过Windows命令行程序使其可用?

fork(2)是Cygwin下的kludgey,因为Windows进程模型不容易让它发生。 Cygwin可能会允许它的产卵使用它,但是你将会受到严重的性能影响,因为Cygwin必须手工模拟所有的东西 – 包括复制可执行数据,复制打开的句柄等。

根据多少霰弹枪使用fork(2) ,这种仿真可能是痛苦的,也可能是相对较小的。

GameDev.net讨论了Win32上缺少fork工具的一个好主意 。 他们提出了一些我没有耐心或平台无障碍的调查,但肯定听起来有趣,危险和爆炸性的同时:

所以,你需要绕过Win32并调用本地API({Nt | Zw} CreateProcess)。 本书“Windows Nt / 2000 Native Api Reference”中有一个“分叉Win32进程”的例子。 这可能是你需要的。

我很好奇,但是我怀疑Cygwin使用它。 可能是在那里,重申我的回答你的问题 – 很多Unix应用程序都依赖于fork ,并且Cygwin可能使其可用。 只是不要期待奇迹,而且你必须通过重新编译Cygwin来包含它的仿真层来让Ruby知道Cygwin。