Process.fork和Ruby 1.9.2中的新Process.spawn方法之间有什么区别?哪个更好在子进程中运行另一个程序?据我所知,Process.fork接受代码块,Process.spawn接受系统命令加上一些其他参数。当我应该使用一个而不是另一个?
答案 0 :(得分:47)
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
。
答案 1 :(得分:0)
我相信Process.Fork会分叉当前进程,而Process.Spawn会生成一个新进程。他们是完全不同的。您想要新线程还是新流程?