class SignalException
当接收到信号时抛出。
begin Process.kill('HUP',Process.pid) sleep # wait for receiver to handle signal sent by Process.kill rescue SignalException => e puts "received Exception #{e}" end
产生
received Exception SIGHUP
公共类方法
来源
static VALUE
esignal_init(int argc, VALUE *argv, VALUE self)
{
    int argnum = 1;
    VALUE sig = Qnil;
    int signo;
    if (argc > 0) {
        sig = rb_check_to_integer(argv[0], "to_int");
        if (!NIL_P(sig)) argnum = 2;
        else sig = argv[0];
    }
    rb_check_arity(argc, 1, argnum);
    if (argnum == 2) {
        signo = NUM2INT(sig);
        if (signo < 0 || signo > NSIG) {
            rb_raise(rb_eArgError, "invalid signal number (%d)", signo);
        }
        if (argc > 1) {
            sig = argv[1];
        }
        else {
            sig = rb_signo2signm(signo);
        }
    }
    else {
        int prefix;
        signo = signm2signo(&sig, FALSE, FALSE, &prefix);
        if (prefix != signame_prefix_len) {
            sig = rb_str_append(rb_str_new_cstr("SIG"), sig);
        }
    }
    rb_call_super(1, &sig);
    rb_ivar_set(self, id_signo, INT2NUM(signo));
    return self;
}
          构造一个新的 SignalException 对象。sig_name 应该是一个已知的信号名称。
公共实例方法
来源
static VALUE
esignal_signo(VALUE self)
{
    return rb_ivar_get(self, id_signo);
}
          返回信号编号。