signals/delivery.rb

tests/_examples/signals/delivery.rb in the metorex repository.

puts Signal.list["INT"] == 2
puts Signal.list.key?("TERM")

interrupt = Interrupt.new
puts interrupt.signo == Signal.list["INT"]
puts interrupt.signm

named = Interrupt.new "shutting down"
puts named.signm
puts named.signo == Signal.list["INT"]

signal = SignalException.new :TERM
puts signal.signm
puts signal.signo == Signal.list["TERM"]

previous = Signal.trap :INT, :SIG_DFL
puts previous

begin
  Process.kill :INT, Process.pid
rescue Interrupt => error
  puts error.signo == Signal.list["INT"]
  puts error.message
end

begin
  Process.kill :TERM, Process.pid
rescue SignalException => error
  puts error.signm
end

Signal.trap :USR1, :SIG_IGN
puts Process.kill(:USR1, Process.pid)

Signal.trap(:USR2) { |number| puts "handled #{number == Signal.list["USR2"]}" }
Process.kill :USR2, Process.pid

begin
  Process.kill :NOPE, Process.pid
rescue ArgumentError => error
  puts error.message
end

Output:

true
true
true
Interrupt
shutting down
true
SIGTERM
true
DEFAULT
true
Interrupt
SIGTERM
1
handled true
unsupported signal 'SIGNOPE'