Какая разница между Process.fork и новыми методами Process.spawn в Ruby 1.9.2 и какой из них лучше запускать другую программу в подпроцессе? Насколько я понимаю, Process.fork принимает блок кода и Process.spawn принимает системную команду плюс некоторые другие параметры. Когда я должен использовать один вместо другого?
Какая разница между Process.fork и Process.spawn в Ruby 1.9.2
Ответ 1
Какая разница между 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, если вам нужно вызвать приложение в подпроцессе.
Ответ 2
Я считаю, что Process.Fork разворачивает текущий процесс, а Process.Spawn запускает новый процесс. Они совершенно разные. Вам нужен новый поток или новый процесс?