class SAAL::ForkedRunner
Public Class Methods
new()
click to toggle source
# File lib/daemon.rb 19 def initialize 20 @rd, @wr = IO.pipe 21 @stop = false 22 trap_signals 23 end
run_as_fork(opts={}) { |forked_runner| ... }
click to toggle source
# File lib/daemon.rb 3 def self.run_as_fork(opts={}) 4 if opts[:foreground] 5 $stderr.puts "Running saal_daemon #{SAAL::VERSION} in foreground..." 6 yield ForkedRunner.new 7 else 8 fork do 9 if not opts[:keep_stdin] 10 $stdin.reopen "/dev/null" 11 $stdout.reopen "/dev/null", "a" 12 $stderr.reopen "/dev/null", "a" 13 end 14 yield ForkedRunner.new 15 end 16 end 17 end
Public Instance Methods
do_exit()
click to toggle source
# File lib/daemon.rb 30 def do_exit 31 @stop = true 32 @wr.write(1) 33 end
select(read, write=[], err=[], time=nil)
click to toggle source
# File lib/daemon.rb 43 def select(read, write=[], err=[], time=nil) 44 if time 45 Kernel.select(read+[@rd],write,err,time) 46 else 47 Kernel.select(read+[@rd],write,err) 48 end 49 end
sleep(time)
click to toggle source
# File lib/daemon.rb 39 def sleep(time) 40 select([],[],[],time) 41 end
stop?()
click to toggle source
# File lib/daemon.rb 35 def stop? 36 @stop 37 end
trap_signals()
click to toggle source
# File lib/daemon.rb 25 def trap_signals 26 Signal.trap("TERM") {do_exit} 27 Signal.trap("INT") {do_exit} 28 end