Module: Process

Defined in:
lib/dorothy2/environment.rb

Class Method Summary collapse

Class Method Details

.daemon(nochdir = nil, noclose = nil) ⇒ Object

Supply daemon for pre ruby 1.9

Adapted from lib/active_support/core_ext/process/daemon.rb


4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
# File 'lib/dorothy2/environment.rb', line 4

def self.daemon(nochdir = nil, noclose = nil)
  exit! if fork                     # Parent exits, child continues.
  Process.setsid                    # Become session leader.
  exit! if fork                     # Zap session leader. See [1].

  unless nochdir
    Dir.chdir "/"                 # Release old working directory.
  end

  unless noclose
    STDIN.reopen "/dev/null"       # Free file descriptors and
    STDOUT.reopen "/dev/null", "a" # point them somewhere sensible.
    STDERR.reopen '/dev/null', 'a'
  end

  trap("TERM") { exit }

  return 0

end