Skip to content

Instantly share code, notes, and snippets.

Embed
What would you like to do?
How to catch SIGINT and SIGTERM signals in Ruby
# Signal catching
def shut_down
puts "\nShutting down gracefully..."
sleep 1
end
puts "I have PID #{Process.pid}"
# Trap ^C
Signal.trap("INT") {
shut_down
exit
}
# Trap `Kill `
Signal.trap("TERM") {
shut_down
exit
}
@Neonit

This comment has been minimized.

Copy link

@Neonit Neonit commented Jul 24, 2016

Really cool. You can utilize Ruby's catch-throw, if you want to trap the signal and just continue, as if you have rescued it.

Signal.trap('INT') { throw :sigint }

catch :sigint
    do_stuff_that_may_be_interrupted
end
puts 'Just caught a SIGINT'
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment