# File lib/chef/client.rb, line 162 def run if(Chef::Config[:client_fork] && Process.respond_to?(:fork)) Chef::Log.info "Forking chef instance to converge..." pid = fork do Chef::Log.info "Forked instance now converging" do_run exit end Chef::Log.info "Fork successful. Waiting for new chef pid: #{pid}" result = Process.waitpid2(pid) raise "Forked convergence run failed" unless result.last.success? Chef::Log.info "Forked child successfully reaped (pid: #{pid})" true else do_run end end