Forum: Ruby-dev [ruby-trunk - Feature #5613][Open] Signal.termsigname メソッドの追加

Posted by Motohiro KOSAKI (Guest)
on 2011-11-11 05:22
(Received via mailing list)
Issue #5613 has been reported by Motohiro KOSAKI.

----------------------------------------
Feature #5613: Signal.termsigname メソッドの追加
http://redmine.ruby-lang.org/issues/5613

Author: Motohiro KOSAKI
Status: Open
Priority: Normal
Assignee:
Category:
Target version:


現状、$?.termsigでシグナル番号が得られますが番号なんかもらってもちっとも嬉しくなく、
(シグナル番号はポータブルじゃないから)結局

signame = Signal.list.invert[$?.termsig]

とやってシグナル名に変換する必要があるように思います。毎回。
ばかばかしいので、 termsignameという文字列を返すメソッドの追加を提案します。
Posted by mame (Yusuke Endoh) (Guest)
on 2012-03-27 17:14
(Received via mailing list)
Issue #5613 has been updated by mame (Yusuke Endoh).

Status changed from Open to Assigned
Assignee set to kosaki (Motohiro KOSAKI)

パッチ晒して「反対がなければコミットします」って言えばいいんじゃないかと思います。

--
Yusuke Endoh <mame@tsg.ne.jp>
----------------------------------------
Feature #5613: Signal.termsigname メソッドの追加
https://bugs.ruby-lang.org/issues/5613#change-25258

Author: kosaki (Motohiro KOSAKI)
Status: Assigned
Priority: Normal
Assignee: kosaki (Motohiro KOSAKI)
Category:
Target version:


現状、$?.termsigでシグナル番号が得られますが番号なんかもらってもちっとも嬉しくなく、
(シグナル番号はポータブルじゃないから)結局

signame = Signal.list.invert[$?.termsig]

とやってシグナル名に変換する必要があるように思います。毎回。
ばかばかしいので、 termsignameという文字列を返すメソッドの追加を提案します。
Posted by kosaki (Motohiro KOSAKI) (Guest)
on 2012-03-29 01:09
(Received via mailing list)
Issue #5613 has been updated by kosaki (Motohiro KOSAKI).


了解しました
----------------------------------------
Feature #5613: Signal.termsigname メソッドの追加
https://bugs.ruby-lang.org/issues/5613#change-25329

Author: kosaki (Motohiro KOSAKI)
Status: Assigned
Priority: Normal
Assignee: kosaki (Motohiro KOSAKI)
Category:
Target version:


現状、$?.termsigでシグナル番号が得られますが番号なんかもらってもちっとも嬉しくなく、
(シグナル番号はポータブルじゃないから)結局

signame = Signal.list.invert[$?.termsig]

とやってシグナル名に変換する必要があるように思います。毎回。
ばかばかしいので、 termsignameという文字列を返すメソッドの追加を提案します。
Posted by kosaki (Motohiro KOSAKI) (Guest)
on 2012-11-08 17:20
(Received via mailing list)
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)
+ *
+ *  <em>produces:</em>
+ *
+ *     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という文字列を返すメソッドの追加を提案します。
Posted by nagachika (Tomoyuki Chikanaga) (Guest)
on 2012-11-09 03:10
(Received via mailing list)
Issue #5613 has been updated by nagachika (Tomoyuki Chikanaga).


パッチを拝見しました。
ものすごーく trivial な点で恐縮なのですが
char* signame;
は
char *signame;
(アスタリスクの位置を変数名の直前に)のほうが周辺の変数宣言と揃っていて良いかと思います。
----------------------------------------
Feature #5613: Signal.termsigname メソッドの追加
https://bugs.ruby-lang.org/issues/5613#change-32660

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という文字列を返すメソッドの追加を提案します。
Posted by KOSAKI Motohiro (Guest)
on 2012-11-09 16:47
(Received via mailing list)
> $B%Q%C%A$rGR8+$7$^$7$?!#(B
> $B$b$N$9$4!<$/(B trivial $B$JE@$G62=L$J$N$G$9$,(B
> char* signame;
> $B$O(B
> char *signame;
> 
($B%"%9%?%j%9%/$N0LCV$rJQ?tL>$ND>A0$K(B)$B$N$[$&$,<~JU$NJQ?t@k8@$HB7$C$F$$$FNI$$$+$H;W$$$^$9!#(B

$B$"$l$(!#$J$s$G$3$3$@$1$:$l$A$c$C$?$s$@$m$&!#D>$7$^$9!#$9$$$^$;$s(B
Please log in before posting. Registration is free and takes only a minute.
Existing account (Switch to SSL-encrypted connection)
NEW: Do you have a Google/GoogleMail or Yahoo account? No registration required!
Log in with Google account | Log in with Yahoo account
No account? Register here.