8: def daemonize
9: if pid = fork
10: Process.detach(pid)
11: exit(0)
12: end
13:
14:
15: Puppet::Util::Log.close(:console)
16:
17: Process.setsid
18: Dir.chdir("/")
19: begin
20: $stdin.reopen "/dev/null"
21: $stdout.reopen "/dev/null", "a"
22: $stderr.reopen $stdout
23: Puppet::Util::Log.reopen
24: rescue => detail
25: Puppet::Util.secure_open("/tmp/daemonout", "w") { |f|
26: f.puts "Could not start #{Puppet[:name]}: #{detail}"
27: }
28: raise "Could not start #{Puppet[:name]}: #{detail}"
29: end
30: end