diff options
author | Joshua Peek <josh@joshpeek.com> | 2008-05-05 10:22:29 -0500 |
---|---|---|
committer | Joshua Peek <josh@joshpeek.com> | 2008-05-05 10:22:29 -0500 |
commit | 3cffe92ff066c2b35eef409547db93652c5cccfc (patch) | |
tree | f714643a4043d9fb73b39ec2a114d18f5deeffdd /activesupport/lib/active_support/core_ext/process | |
parent | d75525b045b9f27ed108912a6dbdbad5ab775045 (diff) | |
download | rails-3cffe92ff066c2b35eef409547db93652c5cccfc.tar.gz rails-3cffe92ff066c2b35eef409547db93652c5cccfc.tar.bz2 rails-3cffe92ff066c2b35eef409547db93652c5cccfc.zip |
Added Ruby 1.8 implementation of Process.daemon
Diffstat (limited to 'activesupport/lib/active_support/core_ext/process')
-rw-r--r-- | activesupport/lib/active_support/core_ext/process/daemon.rb | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/activesupport/lib/active_support/core_ext/process/daemon.rb b/activesupport/lib/active_support/core_ext/process/daemon.rb new file mode 100644 index 0000000000..95ad5f8a5d --- /dev/null +++ b/activesupport/lib/active_support/core_ext/process/daemon.rb @@ -0,0 +1,25 @@ +if RUBY_VERSION < "1.9" + module Process + 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 + end +end |