gpt4 book ai didi

Ruby 守护进程软停止

转载 作者:数据小太阳 更新时间:2023-10-29 08:51:19 25 4
gpt4 key购买 nike

这个简单的守护进程(使用 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 个数字?

最佳答案

您需要捕获调用停止时发送的 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

关于Ruby 守护进程软停止,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12266645/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com