Ruby 2.2.0 リファレンスマニュアル > ライブラリ一覧 > 組み込みライブラリ > Signalモジュール
クラスの継承リスト: Signal
UNIX のシグナル関連の操作を行うモジュールです。
list -> Hash
[permalink][rdoc]シグナル名とシグナル番号を対応づけた Hash オブジェクトを返し ます。
例:
p Signal.list # => {"WINCH"=>28, "PROF"=>27, ...}
[SEE_ALSO] Signal.#signame
signame(signo) -> String
[permalink][rdoc]引数で指定されたシグナル番号をシグナル名に変換して返します。
Signal.trap("INT") { |signo| puts Signal.signame(signo) } Process.kill("INT", 0) # => INT
[SEE_ALSO] Signal.#list
trap(signal, command) -> String | Proc | nil
[permalink][rdoc]trap(signal) { ... } -> String | Proc | nil
指定された割り込み signal に対するハンドラとして command を登録します。 指定したシグナルが捕捉された時には例外が発生せず、代わりに command が実行されます。 ブロックを指定した場合にはブロックをハンドラとして登録します。
trap は前回の trap で設定したハンドラを返します。 文字列を登録していた場合はそれを、 ブロックを登録していたらそれを Proc オブジェクトに変換して返します。 また何も登録されていないときも nil を返します。 ruby の仕組みの外でシグナルハンドラが登録された場合 (例えば拡張ライブラリが独自に sigaction を呼んだ場合など) も nil を返します。
いくつかのシグナルに対して、Ruby インタプリタは例外 Interrupt や SignalException を発生させます。このようなシグナルは例外処理によっ て捕捉することもできます。
例:
begin Process.kill :QUIT, $$ # 自身にSIGQUITを送信 rescue SignalException puts "rescue #$!" end # => rescue SIGQUIT
例:
Signal.trap(:INT, "p true") # => "DEFAULT" Signal.trap(:INT) { p false } # => "p true" Signal.trap(:INT, proc{ p nil }) # => #<Proc:0x8e45ae0@-:2> Signal.trap(:INT, "SIG_IGN") # => #<Proc:0x8e45914@-:3> Signal.trap(:INT, "DEFAULT") # => "IGNORE" Signal.trap(:INT, "EXIT") # => "DEFAULT" Signal.trap(:INT, nil) # => "EXIT"
Signal.trap(0, proc { puts "Terminating: #{$$}" })
Signal.trap("CLD") { puts "Child died" }
fork && Process.wait
# => Terminating: 13939
# => Child died
# => Terminating: 13907
[SEE_ALSO] 終了処理