В чем разница между 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
, если вам нужно вызвать приложение в подпроцессе.