Module: Process
- Defined in:
- lib/core/facets/process/daemon.rb
Class Method Summary collapse
-
.daemon(nochdir = nil, noclose = nil) ⇒ Object
Turns the current script into a daemon process that detaches from the console.
Class Method Details
.daemon(nochdir = nil, noclose = nil) ⇒ Object
Turns the current script into a daemon process that detaches from the console. It can be shut down with a TERM signal.
CREDIT: David Heinemeier Hansson
9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
# File 'lib/core/facets/process/daemon.rb', line 9 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 File.umask 0000 # Ensure sensible umask. Adjust as needed. 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 |