【发布时间】:2011-10-06 19:53:54
【问题描述】:
我想在 Linux 上创建一个 ruby 程序的守护进程。
我还希望守护进程是交互式的——我希望能够通过文件/管道/最简单的方法将输入发送到守护进程,并将输出接收到文件。
我该怎么做?
我查看了模块守护进程 (http://daemons.rubyforge.org/)、线程和 popen3 方法,但我很难让它们执行上述操作。
回答: 姆拉登的方法:
我有创建守护进程的控制器:(你需要守护进程模块 gem)
require 'rubygems'
require 'daemons'
Daemons.run('/myDaemon.rb', {:app_name => "o", :dir_mode => :normal, :dir => '', :log_output => true, :multiple => true })
这是 myDaemon.rb:
puts `pwd`
File.open('my_pipe', 'r+') do |f|
loop do
line = f.gets
puts "Got: #{line}"
end
end
步骤: 这两个文件都在我的根目录 \. Daemons.run 在\中创建守护进程。
创建命名管道 mkfifo ./my_pipe。
ruby controller.rb 启动
cat > my_pipe
输入文字
ctrl-c 停止输入
cat o.output 查看你的输出
【问题讨论】: