module Signal

Public Class Methods

list_trappable() click to toggle source

Like Signal.list, but only returns signals that we can actually trap.

# File lib/phusion_passenger/ruby_core_enhancements.rb, line 147
def self.list_trappable
        ruby_engine = defined?(RUBY_ENGINE) ? RUBY_ENGINE : "ruby"
        case ruby_engine
        when "jruby"
                result = Signal.list.dup
                result.delete("QUIT")
                result.delete("ILL")
                result.delete("FPE")
                result.delete("SEGV")
                result.delete("USR1")
                result.delete("IOT")
                result.delete("EXIT")
        else
                result = Signal.list.dup
                result.delete("ALRM")
                result.delete("VTALRM")
        end

        # Don't touch SIGCHLD no matter what! On OS X waitpid() will
        # malfunction if SIGCHLD doesn't have a correct handler.
        result.delete("CLD")
        result.delete("CHLD")

        # Other stuff that we don't want to trap no matter which
        # Ruby engine.
        result.delete("STOP")
        result.delete("KILL")

        return result
end