Report abuse

trap('INT') { raise Interrupt, nil }

Thread.new do
  loop do
    begin
      sleep 5
    rescue Interrupt
      puts "kapow!"
      exit
    end
  end
end.join

# trap.rb:1: Interrupt (Interrupt)
#   from trap.rb:3:in `call'
#   from trap.rb:3:in `join'
#   from trap.rb:3