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