我想在 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。
红宝石控制器.rb 开始
猫 > my_pipe
输入文字
ctrl-c 停止输入
cat o.output 查看你的输出