【发布时间】:2011-05-06 23:08:27
【问题描述】:
Process.fork 和 Ruby 1.9.2 中的新 Process.spawn 方法有什么区别,哪个更好在子进程中运行另一个程序?据我了解 Process.fork 接受代码块, Process.spawn 接受系统命令和一些其他参数。我什么时候应该使用一个而不是另一个?
【问题讨论】:
标签: ruby-on-rails ruby process ruby-1.9
Process.fork 和 Ruby 1.9.2 中的新 Process.spawn 方法有什么区别,哪个更好在子进程中运行另一个程序?据我了解 Process.fork 接受代码块, Process.spawn 接受系统命令和一些其他参数。我什么时候应该使用一个而不是另一个?
【问题讨论】:
标签: ruby-on-rails ruby process ruby-1.9
Process.fork 和 Ruby 1.9.2 中的新 Process.spawn 方法有什么区别
Process.fork 允许您在另一个进程中运行 ruby 代码。 Process.spawn 允许您在另一个进程中运行另一个程序。基本上Process.spawn 就像使用Process.fork 然后在分叉进程中调用exec 一样,只是它为您提供了更多选择。
在子进程中运行另一个程序哪个更好?
如果您需要向后兼容,请使用 fork + exec,因为 spawn 在 1.8 中不可用。否则使用spawn,因为在子进程中运行另一个程序正是spawn 的用途。
据我了解 Process.fork 接受代码块,而 Process.spawn 接受系统命令和一些其他参数。
没错。
什么时候我应该使用一个而不是另一个?
如果您需要在单独的进程中运行任意 ruby 代码,请使用 fork(您无法使用 spawn 执行此操作)。如果您需要在子进程中调用应用程序,请使用spawn。
【讨论】:
我相信 Process.Fork 会分叉当前进程,而 Process.Spawn 会产生一个新进程。它们完全不同。你想要一个新线程还是一个新进程?
【讨论】: