【问题标题】:Spawn a background process in Ruby on Windows?在 Windows 上的 Ruby 中生成一个后台进程?
【发布时间】:2011-04-19 22:11:25
【问题描述】:

我基本上和Spawn a background process in Ruby 提出了同样的问题,除了我需要在 Windows 环境中生成一个后台进程!不幸的是,我的研究表明 Windows 不支持 Ruby 分叉(只有勺子。Rimshot!)。

【问题讨论】:

    标签: ruby windows fork background-process


    【解决方案1】:

    win32-process 库是 Win32Utils 套件的一部分,可能就是您所追求的。

    http://win32utils.rubyforge.org/

    win32-process 库为 MS Windows 添加了 Process.create 和 Process.fork 方法。此外,它还提供了 wait、wait2、waitpid 和 waitpid2 方法的不同实现。 Process.create 方法允许您使用各种不同的配置选项创建本机 MS Windows 进程。

    Process.fork 实现应该被认为是实验性的,而不是在生产代码中使用。

    安装:gem install win32-process

    【讨论】:

    • Process.fork 自 0.7.0 起已从 win32-process 中删除(请参阅github page),您可以按照@rogerdpack 的建议使用Process.spawn
    【解决方案2】:

    查尔斯的回答很棒。我还发现我可以利用 Windows 的start,例如执行dir 命令:

    system('start dir')
    

    这会随进程生成一个 cmd 窗口,这在某些情况下是不可取的。但是,如果这是可以容忍的,那么您不需要 win32-process 依赖项:)

    【讨论】:

    • @stack1 我的代码示例现在包含一个实际命令,dir。你使用哪个命令都是任意的,只要它可以被命令提示符解析即可。
    【解决方案3】:

    1.9.x 的 Process.spawn 似乎运行良好,见http://en.wikibooks.org/wiki/Ruby_Programming/Running_Multiple_Processes的最后一段

    【讨论】:

      猜你喜欢
      • 2011-01-31
      • 2013-07-28
      • 1970-01-01
      • 2021-07-26
      • 2014-04-21
      • 1970-01-01
      • 2013-02-04
      • 1970-01-01
      • 2015-06-22
      相关资源
      最近更新 更多