ruby--ruby/prelude.rb

37 lines
962 B
Ruby

# currently empty
module Process
# call-seq:
# Process.daemon() => 0
# Process.daemon(nochdir=nil,noclose=nil) => 0
#
# Detach the process from controlling terminal and run in
# the background as system daemon. Unless the argument
# nochdir is true (i.e. non false), it changes the current
# working directory to the root ("/"). Unless the argument
# noclose is true, daemon() will redirect standard input,
# standard output and standard error to /dev/null.
# Return zero on success, or raise one of Errno::*.
def self.daemon(nochdir = nil, noclose = nil)
if $SAFE >= 2
raise SecurityError, "Insecure operation `%s' at level %d", __method__, $SAFE
end
fork && exit!(0)
Process.setsid()
fork && exit!(0)
Dir.chdir('/') unless nochdir
File.open('/dev/null', 'r+') { |f|
STDIN.reopen(f)
STDOUT.reopen(f)
STDERR.reopen(f)
} unless noclose
return 0
end
end