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