В чем разница между Process.fork и Process.spawn в Ruby 1.9.2 - PullRequest
32 голосов
/ 09 ноября 2010

В чем разница между Process.fork и новыми методами Process.spawn в Ruby 1.9.2 и какой из них лучше для запуска другой программы в подпроцессе? Насколько я понимаю, Process.fork принимает блок кода, а Process.spawn принимает системную команду плюс некоторые другие параметры. Когда я должен использовать один вместо другого?

Ответы [ 2 ]

47 голосов
/ 09 ноября 2010

В чем разница между Process.fork и новыми методами Process.spawn в Ruby 1.9.2

Process.fork, позволяющими запускать код ruby ​​в другом процессе.Process.spawn позволяет запускать другую программу в другом процессе.По сути, Process.spawn похоже на использование Process.fork и последующий вызов exec в разветвленном процессе, за исключением того, что он дает вам больше возможностей.

и какой из них лучше запустить другую программу в подпроцесс?

Если вам нужна обратная совместимость, используйте fork + exec, поскольку spawn недоступно в 1.8.В противном случае используйте spawn, поскольку запуск другой программы в подпроцессе - это именно то, для чего spawn предназначен.

Насколько я понимаю, Process.fork принимает блок кода, а Process.spawn принимает системукоманда плюс некоторые другие параметры.

Точно.

Когда мне следует использовать один вместо другого?

Использовать fork, есливам нужно запустить произвольный код ruby ​​в отдельном процессе (вы не можете сделать это с spawn).Используйте spawn, если вам нужно вызвать приложение в подпроцессе.

0 голосов
/ 09 ноября 2010

Я считаю, что Process.Fork разветвляет текущий процесс, а Process.Spawn порождает новый процесс. Они совсем разные. Вы хотите новую тему или новый процесс?

...