[英]In Ruby, how to trap a signal multiple times?
我有一個程序可以捕獲Ctrl + c ,但是它只能被捕獲一次。 當您鍵入exit
退出irb會話時, 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的普遍問題。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.