【问题标题】:What's the best way to start a background process, that can get accessed later on启动后台进程的最佳方式是什么,以后可以访问
【发布时间】:2010-08-26 19:23:40
【问题描述】:

我目前正在开发一个提供可执行文件的 RubyGem。 可执行文件使用 FSSM gem 跟踪一些日志文件的状态。

这个可执行文件应该可以启动,在后台做一些事情,然后停止。

例如:

$ my_executable start
# do something different...
$ my_executable stop

我会首先启动一个新进程,它会在 start 内部进行文件监视 方法。但我不知道如何解决这个过程来停止它。

提供这种行为的最佳方式是什么?

问候

【问题讨论】:

    标签: ruby process background jobs


    【解决方案1】:
    pid = Process.fork{exec 'gcalctool'} #don't use 'system' or `executable`
    1.upto(10) do |n|
      puts "counting #{n}"
      STDOUT.flush
      sleep 1
    end
    Process.kill( 'HUP', pid )
    

    【讨论】:

    • 这些天我收集到 more correct 使用 Process.spawn "foo" 而不是 Process.fork{ exec "foo" } 的目的只是为了启动另一个进程。
    【解决方案2】:

    daemons 库可以帮助您守护您的 ruby​​ 脚本。是mongrel使用的。

    ruby-toolbox 上还描述了一些其他有用的 gem。

    【讨论】:

      猜你喜欢
      • 2018-05-03
      • 2013-12-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多