我正在尝试使用一个名为shotgun的Ruby gem,它需要fork(2)命令,我发现它是一个Linux命令,并且可能在Cygwin中可用.是否可以通过Windows命令shell使其可用?
fork(2)在Cygwin下是kludgey,因为Windows进程模型不容易让它发生. Cygwin可能允许它的产生使用它,但是你将遭受严重的性能损失,因为Cygwin必须手动模拟所有东西 – 包括复制可执行数据,复制打开的句柄等.
根据霰弹枪使用前叉(2)的数量,这种模拟可能会很痛苦,也可能相对较小.
这是一个good thread on GameDev.net,讨论Win32上缺少fork工具.他们提出了一些我没有耐心或平台可访问性来调查的东西,但同时听起来既有趣又危险且具有爆炸性:
So,you need to bypass Win32 and call the native API ({Nt|Zw}CreateProcess). The book “Windows Nt/2000 Native Api Reference” has an example “Forking a Win32 Process”. This may be what you need.
我很好奇,但我怀疑Cygwin是否使用它.它可能在那里,重申我对你的问题的回答 – 许多Unix应用依赖于fork,而Cygwin可能使它可用.只是不要指望奇迹,你必须通过重新编译包含其仿真层让Ruby知道Cygwin.