一尘不染

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

linux

我正在尝试使用一个名为Shotgun的Ruby
gem,它需要fork(2)命令,而我发现这是一个Linux命令,可能在Cygwin中可用。是否可以通过Windows命令外壳使其可用?


阅读 370

收藏
2020-06-07

共1个答案

一尘不染

fork(2)由于Windows进程模型不容易让它发生,因此在Cygwin的帮助下很麻烦。Cygwin可能允许其生成使用它,但是由于Cygwin必须手动模拟所有内容,包括复制可执行数据,复制打开的句柄等,因此您将遭受严重的性能损失。

根据shot弹枪的使用量fork(2),此模拟可能很痛苦,也可能相对较小。

这是GameDev.net上的一个好话题,讨论了forkWin32上缺少功能的问题。他们提出了一些我没有耐心或平台可访问性的内容,但同时听起来很有趣,危险且具有爆炸性:

因此,您需要绕过Win32并调用本机API({Nt | Zw} CreateProcess)。《 Windows Nt /
2000本机Api参考》一书中有一个示例“ Forking Win32 Process”。这可能就是您所需要的。

我很感兴趣,但是我怀疑Cygwin使用它。重申我对您的问题的回答可能就在这里-
许多Unix应用程序都依赖fork,而Cygwin可能会使其可用。只是不要指望奇迹,您必须通过重新编译Ruby来包含它的仿真层,从而使Ruby意识到Cygwin。

2020-06-07