Module: Process

Defined in:
lib/puma/daemon_ext.rb

Class Method Summary collapse

Class Method Details

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



12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
# File 'lib/puma/daemon_ext.rb', line 12

def self.daemon(nochdir=false, noclose=false)
  exit if fork                     # Parent exits, child continues.

  Process.setsid                   # Become session leader.

  exit if fork                     # Zap session leader. See [1].

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

  if !noclose
    STDIN.reopen File.open("/dev/null", "r")

    null_out = File.open "/dev/null", "w"
    STDOUT.reopen null_out
    STDERR.reopen null_out
  end

  0
end