Использование fork в Windows с Ruby

Когда я вызываю Kernel.fork() в Windows, я получаю эту ошибку:

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

Есть ли альтернативный способ для вилки в Windows?

Ответ 1

Попробуйте spawn() - он реализован для окон.

Ответ 2

В то время как ОС Windows не поддерживает fork, win32-process gem, похоже, поддерживает замену. По-видимому, есть некоторые отличия от версии unix, но см. Этот вопрос: fork с Ruby 1.8 и Windows

Ответ 3

Обычным способом получения верной эмуляции вилки в Windows является установка Cygwin и запуск ее библиотеки. В этом случае вам нужно будет установить второй Ruby, на этот раз из пакета Cygwin.

Ответ 4

Как упоминалось в DigitalRoss, Cygwin POSIX совместим и имеет вилку.

$ 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.

Ответ 5

В Windows 10 есть функция подсистемы Windows для Linux, которую вы можете установить.

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

Это позволит вам использовать одно из приложений Unix Distro в хранилище Windows для установки оболочки bash. Затем вы можете запустить приложение в среде Linux, эффективно включив функцию Fork()