Feature #5613

Signal.termsigname メソッドの追加

Added by Motohiro KOSAKI over 3 years ago. Updated over 2 years ago.

[ruby-dev:44858]
Status:Closed
Priority:Normal
Assignee:Motohiro KOSAKI

Description

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

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

とやってシグナル名に変換する必要があるように思います。毎回。
ばかばかしいので、 termsignameという文字列を返すメソッドの追加を提案します。

signame.patch Magnifier (1.7 KB) Motohiro KOSAKI, 11/09/2012 01:19 AM

Associated revisions

Revision 37723
Added by Motohiro KOSAKI over 2 years ago

  • 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

Revision 37723
Added by Motohiro KOSAKI over 2 years ago

  • 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

History

#1 Updated by Yusuke Endoh over 3 years ago

  • Status changed from Open to Assigned
  • Assignee set to Motohiro KOSAKI

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

Yusuke Endoh mame@tsg.ne.jp

#2 Updated by Motohiro KOSAKI over 3 years ago

了解しました

#3 Updated by Motohiro KOSAKI over 2 years ago

  • Category set to core
  • File signame.patchMagnifier added
  • 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 の結果に合わせた

反対がなければコミットしようと思います

#4 Updated by Tomoyuki Chikanaga over 2 years ago

パッチを拝見しました。
ものすごーく trivial な点で恐縮なのですが
char* signame;

char *signame;
(アスタリスクの位置を変数名の直前に)のほうが周辺の変数宣言と揃っていて良いかと思います。

#5 Updated by Motohiro KOSAKI over 2 years ago

パッチを拝見しました。
ものすごーく trivial な点で恐縮なのですが
char* signame;

char *signame;
(アスタリスクの位置を変数名の直前に)のほうが周辺の変数宣言と揃っていて良いかと思います。

あれえ。なんでここだけずれちゃったんだろう。直します。すいません

#6 Updated by Motohiro KOSAKI over 2 years ago

  • % Done changed from 0 to 100
  • Status changed from Assigned to Closed

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

Also available in: Atom PDF