我想在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 –