Ответ 1
Попробуйте spawn()
- он реализован для окон.
Когда я вызываю Kernel.fork()
в Windows, я получаю эту ошибку:
!! Unexpected error while processing request: fork() function is unimplemented on this machine
Есть ли альтернативный способ для вилки в Windows?
Попробуйте spawn()
- он реализован для окон.
В то время как ОС Windows не поддерживает fork, win32-process gem, похоже, поддерживает замену. По-видимому, есть некоторые отличия от версии unix, но см. Этот вопрос: fork с Ruby 1.8 и Windows
Обычным способом получения верной эмуляции вилки в Windows является установка Cygwin и запуск ее библиотеки. В этом случае вам нужно будет установить второй Ruby, на этот раз из пакета Cygwin.
Как упоминалось в 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.
В Windows 10 есть функция подсистемы Windows для Linux, которую вы можете установить.
https://msdn.microsoft.com/en-us/commandline/wsl/install-win10
Это позволит вам использовать одно из приложений Unix Distro в хранилище Windows для установки оболочки bash. Затем вы можете запустить приложение в среде Linux, эффективно включив функцию Fork()