在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()