class Process::Daemon::Controller

def spawn

Fork a child process, detatch it and run the daemon code.
def spawn
	@daemon.prefork
	@daemon.mark_log
	fork do
		Process.setsid
		exit if fork
		ProcessFile.store(@daemon, Process.pid)
		File.umask 0000
		Dir.chdir @daemon.working_directory
		$stdin.reopen '/dev/null'
		$stdout.reopen @daemon.log_file_path, 'a'
		$stdout.sync = true
	
		$stderr.reopen $stdout
		$stderr.sync = true
		begin
			@daemon.spawn
		rescue Exception => error
			$stderr.puts "=== Daemon Exception Backtrace @ #{Time.now.to_s} ==="
			$stderr.puts "#{error.class}: #{error.message}"
			$!.backtrace.each { |at| $stderr.puts at }
			$stderr.puts "=== Daemon Crashed ==="
			$stderr.flush
		ensure
			$stderr.puts "=== Daemon Stopping @ #{Time.now.to_s} ==="
			$stderr.flush
		end
	end
end