gpt4 book ai didi

ruby - 在 Ruby 中,如何多次捕获一个信号?

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

我有一个程序可以捕获 Ctrl + c,但它只能捕获一次。当您键入 exit 退出 irb session 时,Ctrl + c 产生的信号不能再次被捕获。有任何想法吗?这是程序:

require 'irb'
#trap "INT" do
# IRB.start
#end

Signal.trap("INT") { IRB.start }

count = 0

loop do
count += 1
puts count
puts "Value = #{@value}" if defined? @value
sleep 1
end

最佳答案

问题是 IRB 在您调用它时为 sigint 设置了自己的处理程序,这会覆盖您的处理程序。要解决此问题,您可以在 IRB 完成后再次重置处理程序,如下所示:

def set_trap
Signal.trap("INT") do
IRB.start
set_trap
end
end

set_trap

虽然这会在您第二次调用 IRB 时引起一堆警告,但这是多次调用 IRB 的普遍问题。

关于ruby - 在 Ruby 中,如何多次捕获一个信号?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9150310/

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