【问题标题】:What's the difference between Process.fork and Process.spawn in Ruby 1.9.2Ruby 1.9.2 中 Process.fork 和 Process.spawn 有什么区别
【发布时间】: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


    【解决方案1】:

    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

    【讨论】:

      【解决方案2】:

      我相信 Process.Fork 会分叉当前进程,而 Process.Spawn 会产生一个新进程。它们完全不同。你想要一个新线程还是一个新进程?

      【讨论】:

      • 我需要一个新进程,目前使用 Process.fork(用于后台视频编码)。我刚刚在 Ruby 1.9 中发现了新的 Process.spawn 方法,并对其中的差异以及我是否能以某种方式从中受益感到好奇。
      猜你喜欢
      • 2011-07-27
      • 2010-09-06
      • 2010-11-17
      • 1970-01-01
      • 1970-01-01
      • 2010-12-16
      • 2013-06-10
      • 2011-05-17
      • 2012-09-12
      相关资源
      最近更新 更多