Project

General

Profile

Actions

Feature #5613

closed

Signal.termsigname メソッドの追加

Added by kosaki (Motohiro KOSAKI) over 10 years ago. Updated over 9 years ago.

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

Description

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

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

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


Files

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

Updated by mame (Yusuke Endoh) about 10 years ago

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

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

--
Yusuke Endoh

Updated by kosaki (Motohiro KOSAKI) about 10 years ago

了解しました

Updated by kosaki (Motohiro KOSAKI) over 9 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 の結果に合わせた

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

Updated by nagachika (Tomoyuki Chikanaga) over 9 years ago

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

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

Updated by kosaki (Motohiro KOSAKI) over 9 years ago

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

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

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

Actions #6

Updated by kosaki (Motohiro KOSAKI) over 9 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
Actions

Also available in: Atom PDF