class Servolux::Server
def trap_signals
def trap_signals @queue = [] @rd, @wr = IO.pipe SIGNALS.each do |sig| method = sig.downcase.to_sym if self.respond_to? method Signal.trap(sig) do begin @queue << method @wr.write_nonblock("!") rescue StandardError => err logger.error "Exception in signal handler: #{method}" logger.error err end end end end Thread.new { :run while process_signals @rd.close if !@rd.nil? && !@rd.closed? @wr.close if !@wr.nil? && !@wr.closed? logger.info "Signal processing thread has stopped" } end