File: active_support/core_ext/process/daemon.rb

Overview
Module Structure
Code

Overview

Module Structure

  module: <Toplevel Module>
  module: <Built-in Module>
  module: Process#2
has properties
module method: daemon / 2 #3

Code

   1  if RUBY_VERSION < "1.9"
   2    module Process
   3      def self.daemon(nochdir = nil, noclose = nil)
   4        exit if fork                     # Parent exits, child continues.
   5        Process.setsid                   # Become session leader.
   6        exit if fork                     # Zap session leader. See [1].
   7 
   8        unless nochdir
   9          Dir.chdir "/"                  # Release old working directory.
  10        end
  11 
  12        File.umask 0000                  # Ensure sensible umask. Adjust as needed.
  13 
  14        unless noclose
  15          STDIN.reopen "/dev/null"       # Free file descriptors and
  16          STDOUT.reopen "/dev/null", "a" # point them somewhere sensible.
  17          STDERR.reopen '/dev/null', 'a'
  18        end
  19 
  20        trap("TERM") { exit }
  21 
  22        return 0
  23      end
  24    end
  25  end