--- trap(signal, command)
--- trap(signal) { ... }

    signal ǻꤵ줿ߤˤϥɥȤ
    command Ͽޤsignal ϥʥ̾
    ʸ Symbolޤϥʥֹǻꤷޤ

    command ʸޤϥ֥åǻꤷޤ
    nilʸ"""SIG_IGN" ޤ
    "IGNORE" ꤷϡΥʥ̵뤷ޤ
    (ǽʤ)
    "SIG_DFL" ޤ "DEFAULT" ꤷϡ
    ǥեȤưԤʤ褦ˤʤޤ
    "EXIT"ꤷϡʥȽλ
    Ԥäȥơ 0 ǽλޤ

    ޤ signal ̤ͤȤ 0 ޤ "EXIT"
    Ǥޤϡ֥ץνλפɽޤ

    ĤΥʥФơRuby 󥿥ץ꥿㳰 Interrupt 
    SignalException ȯޤΤ褦ʥʥ㳰ˤ
    ª뤳ȤǤޤ

        begin
          Process.kill :QUIT, $$   # ȤSIGQUIT
        rescue SignalException
          puts "rescue #$!"
        end
        # => rescue SIGQUIT

    trap() ˤª줿ʥ㳰ȯޤ

    trap ϴ˥ʥб command Ͽ
    С֤ޤ(֥å Proc ֥
    ȤȤ֤ޤ"IGNORE"  "DEFAULT" ФƤ
    nil ֤ޤ)ϿƤʤ
    nil ֤ޤ

    ruby 1.8 feature:
    trap ¹ˡ"IGNORE"  "DEFAULT" ϿƤʤ顢
    "IGNORE""DEFAULT" ֤ޤruby 󥿥ץ꥿Τʤ
    ʥϥɥ餬ϿƤ nil ֤ޤ

        p trap(:INT, "p true")     # => nil
        p trap(:INT) { }           # => "p true"
        p trap(:INT, "SIG_IGN")    # => #<Proc:0x401b1328>
        p trap(:INT, "DEFAULT")    # => nil
        p trap(:INT, "EXIT")       # => nil
        p trap(:INT, nil)          # => "EXIT"

    ¸ߤʤʥꤷϡ㳰 ArgumentError ȯ
    ޤ

