这个简单的守护进程(使用ruby daemons gem编写)打印从0到9的数字,直到我使用stop
命令行选项停止守护进程:
require 'rubygems'
require 'daemons'
options = {
:multiple => false,
:ontop => false,
:backtrace => true,
:log_output => true,
:monitor => false
}
Daemons.run_proc('test.rb', options) do
loop do
10.times do |i|
puts "#{i}\n"
sleep(1)
end
end
end
我用
启动守护进程ruby simple_daemon.rb start
并用
停止ruby simple_daemon.rb stop
是否有可能轻轻地停止守护进程,让它在杀死进程之前结束其最后一个循环,以便我确定它最后一次打印所有10个数字?
答案 0 :(得分:3)
您需要捕获调用停止时发送的TERM信号并自行处理。你的代码可能是这样的:
Daemons.run_proc('test.rb', options) do
stopped = false
Signal.trap("TERM") do
stopped = true
end
while not stopped
10.times do |i|
puts "#{i}\n"
sleep(1)
end
end
end