Fix for double fork
This commit is contained in:
@@ -72,10 +72,17 @@ private ######################################################################
|
||||
def kill_all(signal="SIGTERM")
|
||||
running_processes.each do |pid, process|
|
||||
info "sending #{signal} to pid #{pid}"
|
||||
kill(signal, -pid) or kill(signal, pid)
|
||||
Process.kill(signal, pid) rescue Errno::ESRCH
|
||||
end
|
||||
end
|
||||
|
||||
def kill(signal, pid)
|
||||
Process.kill signal, pid
|
||||
rescue Errno::ESRCH
|
||||
false
|
||||
end
|
||||
|
||||
def terminate_gracefully
|
||||
info "sending SIGTERM to all processes"
|
||||
kill_all "SIGTERM"
|
||||
|
||||
@@ -30,11 +30,13 @@ private
|
||||
def fork_with_io(command)
|
||||
reader, writer = IO.pipe
|
||||
pid = fork do
|
||||
Process.setpgrp
|
||||
trap("INT", "IGNORE")
|
||||
$stdout.reopen writer
|
||||
reader.close
|
||||
exec Foreman.runner, replace_command_env(command)
|
||||
end
|
||||
Process.detach pid
|
||||
[ reader, pid ]
|
||||
end
|
||||
|
||||
|
||||
Reference in New Issue
Block a user