Feature #5613
closedSignal.termsigname メソッドの追加
Description
現状、$?.termsigでシグナル番号が得られますが番号なんかもらってもちっとも嬉しくなく、
(シグナル番号はポータブルじゃないから)結局
signame = Signal.list.invert[$?.termsig]
とやってシグナル名に変換する必要があるように思います。毎回。
ばかばかしいので、 termsignameという文字列を返すメソッドの追加を提案します。
Files
Updated by mame (Yusuke Endoh) over 12 years ago
- Status changed from Open to Assigned
- Assignee set to kosaki (Motohiro KOSAKI)
パッチ晒して「反対がなければコミットします」って言えばいいんじゃないかと思います。
--
Yusuke Endoh mame@tsg.ne.jp
Updated by kosaki (Motohiro KOSAKI) about 12 years ago
- File signame.patch 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 の結果に合わせた
反対がなければコミットしようと思います
Updated by nagachika (Tomoyuki Chikanaga) about 12 years ago
パッチを拝見しました。
ものすごーく trivial な点で恐縮なのですが
char* signame;
は
char *signame;
(アスタリスクの位置を変数名の直前に)のほうが周辺の変数宣言と揃っていて良いかと思います。
Updated by kosaki (Motohiro KOSAKI) about 12 years ago
パッチを拝見しました。
ものすごーく trivial な点で恐縮なのですが
char* signame;
は
char *signame;
(アスタリスクの位置を変数名の直前に)のほうが周辺の変数宣言と揃っていて良いかと思います。
あれえ。なんでここだけずれちゃったんだろう。直します。すいません
Updated by kosaki (Motohiro KOSAKI) about 12 years ago
- Status changed from Assigned to Closed
- % Done changed from 0 to 100
This issue was solved with changeset r37723.
Motohiro, thank you for reporting this issue.
Your contribution to Ruby is greatly appreciated.
May Ruby be with you.
- signal.c (sig_signame): implements Signal.signame method
[Feature #5613] - test/ruby/test_signal.rb (test_signame): adds test for above
- NEWS: add an item about above