我想在Linux上创建一个Ruby程序的守护进程。处理守护进程的输入和输出
我也希望守护进程是交互式的 - 我希望能够通过文件/管道/最简单的方法将输入发送到守护进程,并接收输出到文件。
我该如何去做这件事?
我已经看过模块守护进程(http://daemons.rubyforge.org/),线程和方法popen3,但我很难让他们做到上述。
答案: 姆拉登的方法:
我有一个创建守护进程的控制器:(你需要守护程序模块宝石)
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。
红宝石controller.rb开始
猫> my_pipe
类型的文本
CTRL-C停止输入
猫o.output看到你的输出
非常感谢!我花了好几天的时间来解决这个问题! <3 –