捕捉していないシグナルを受け取ったときに発生します。
実際に発生したシグナル名は、 Exception#message から「"SIG" + シグナル名」という形で得られます。
デフォルトの状態では、以下のシグナルが SignalException を発生させます。
なお、SIGINT シグナルを受けた場合は SignalException の下位クラスである Interrupt が発生します。
new(sig_number) -> SignalException
[permalink][rdoc]new(sig_name) -> SignalException
new(sig_number, sig_name) -> SignalException
引数で指定したシグナルに関する SignalException オブジェクトを生成して返します。
引数は Signal.#list に含まれるもののいずれかを指定する必要があります。
signal_number = Signal.list["INT"]
se = SignalException.new(signal_number) # => #<SignalException: SIGINT>
se.signo # => 2
se = SignalException.new("INT") # => #<SignalException: SIGINT>
se.signm # => "SIGINT"
[SEE_ALSO] Signal.#list
signm -> String
[permalink][rdoc]self.message のエイリアスです。
begin
Process.kill('HUP', Process.pid)
sleep
rescue SignalException => e
puts e.signm # => SIGHUP
end
signo -> Integer
[permalink][rdoc]self のシグナル番号を返します。
p Signal.signame(1) # => "HUP"
begin
Process.kill('HUP', Process.pid)
sleep
rescue SignalException => e
p e.signo # => 1
end