From: "kosaki (Motohiro KOSAKI)" Date: 2012-11-09T01:19:57+09:00 Subject: [ruby-dev:46451] [ruby-trunk - Feature #5613] Signal.termsigname メソッドの追加 Issue #5613 has been updated by kosaki (Motohiro KOSAKI). File signame.patch added Category set to core Target version set to 2.0.0 以下のようなパッチで作ってみました + * call-seq: + * Signal.signame(signo) -> string + * + * convert signal number to signal name + * + * Signal.trap("INT") { |signo| puts Signal.signame(signo) } + * Process.kill("INT", 0) + * + * produces: + * + * INT 以下のデザインにしました。 ・名前は Signal.signame ・インスタンスメソッドではなく、モジュールのメソッド。これはtrapハンドラの引数がsignalオブジェクトではなくsignal numberが数値で渡ってくるため ・返ってくるのは文字列。高速化したいなら後から文字列キャッシュ入れるだけなのでSymbolにはしなかった ・文字列は SIGINT ではなく INTのようなSIGを除いた形式。これは Signal.list の結果に合わせた 反対がなければコミットしようと思います ---------------------------------------- Feature #5613: Signal.termsigname メソッドの追加 https://bugs.ruby-lang.org/issues/5613#change-32643 Author: kosaki (Motohiro KOSAKI) Status: Assigned Priority: Normal Assignee: kosaki (Motohiro KOSAKI) Category: core Target version: 2.0.0 現状、$?.termsigでシグナル番号が得られますが番号なんかもらってもちっとも嬉しくなく、 (シグナル番号はポータブルじゃないから)結局 signame = Signal.list.invert[$?.termsig] とやってシグナル名に変換する必要があるように思います。毎回。 ばかばかしいので、 termsignameという文字列を返すメソッドの追加を提案します。 -- http://bugs.ruby-lang.org/