Project

General

Profile

Feature #5613

Signal.termsigname メソッドの追加

Added by kosaki (Motohiro KOSAKI) almost 6 years ago. Updated almost 5 years ago.

Status:
Closed
Priority:
Normal
Target version:
[ruby-dev:44858]

Description

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

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

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

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

Associated revisions

Revision 37723
Added by kosaki (Motohiro KOSAKI) almost 5 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 kosaki (Motohiro KOSAKI) almost 5 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 kosaki (Motohiro KOSAKI) almost 5 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 kosaki (Motohiro KOSAKI) almost 5 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 [ruby-dev:45447] Updated by mame (Yusuke Endoh) over 5 years ago

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

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

--
Yusuke Endoh mame@tsg.ne.jp

#2 [ruby-dev:45453] Updated by kosaki (Motohiro KOSAKI) over 5 years ago

了解しました

#3 [ruby-dev:46451] Updated by kosaki (Motohiro KOSAKI) almost 5 years ago

以下のようなパッチで作ってみました

  • * 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 [ruby-dev:46455] Updated by nagachika (Tomoyuki Chikanaga) almost 5 years ago

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

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

#5 [ruby-dev:46467] Updated by kosaki (Motohiro KOSAKI) almost 5 years ago

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

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

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

#6 Updated by kosaki (Motohiro KOSAKI) almost 5 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

Also available in: Atom PDF