def daemonize(name)
@name = name
pid = pid_from_file
unless running?
remove_pid_file()
Chef::Log.info("Daemonizing..")
begin
exit if fork
Process.setsid
exit if fork
Chef::Log.info("Forked, in #{Process.pid}. Privileges: #{Process.euid} #{Process.egid}")
File.umask Chef::Config[:umask]
$stdin.reopen("/dev/null")
$stdout.reopen("/dev/null", "a")
$stderr.reopen($stdout)
save_pid_file
at_exit {
Chef::Log.debug("daemon pid #{Process.pid} in at_exit handler")
remove_pid_file
}
rescue NotImplementedError => e
Chef::Application.fatal!("There is no fork: #{e.message}")
end
else
Chef::Application.fatal!("Chef is already running pid #{pid}")
end
end