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