在Windows中使用带有Ruby的fork

当我在Windows上调用Kernel.fork()时,我收到此错误:

 !! Unexpected error while processing request: fork() function is unimplemented on this machine 

在Windows上有没有另一种方法来分叉?

尝试spawn() – 它是为Windows实现的。

虽然Windows操作系统不支持fork,但win32-process gem似乎支持替代品。 显然,与unix版本存在一些差异,请参阅此问题: 使用Ruby 1.8和Windows进行分叉

在Windows上获得忠实的fork仿真的通常方法是安装Cygwin并使用其库运行。 在这种情况下,您需要安装第二个Ruby,这次是从Cygwin包中。

正如DigitalRoss所提到的, Cygwin符合POSIX标准,并且有fork。

 $ irb irb(main):001:0> Kernel.fork() => 4512 irb(main):002:0> => nil irb(main):002:0> quit $ uname -a CYGWIN_NT-5.1 dumbopc 1.7.17(0.262/5/3) 2012-10-19 14:39 i686 Cygwin $ ruby -v ruby 1.9.3p385 (2013-02-06 revision 39114) [i386-cygwin] 

您可能必须使用Cygwin Ports镜像来查找Ruby包。

Windows 10具有可以安装的Windows Subsystem for Linuxfunction。

https://msdn.microsoft.com/en-us/commandline/wsl/install-win10

这将允许您利用Windows商店中的一个Unix Distro应用程序来安装bash shell。 然后,您可以在Linux环境中运行您的应用程序,从而有效地启用Fork()