def fork_worker(id)
pid = fork do
$0="#{config.name}[#{id}]"
Signal.trap('INT', proc {})
Signal.trap('HUP', proc {})
Signal.trap('TERM', proc {Process.exit(0)})
if config.after_fork.is_a?(Proc)
self.config.after_fork.call
end
if self.config.script.is_a?(String)
require self.config.script
elsif self.config.script.is_a?(Proc)
self.config.script.call
end
end
logger.info "Spawned #{config.name}[#{id}] (with PID #{pid})"
STDOUT.flush
Process.detach(pid)
self.child_processes[id] ||= {}
self.child_processes[id][:pid] ||= pid
self.child_processes[id][:respawns] ||= 0
self.child_processes[id][:started_at] = Time.now
end