diff --git a/lib/foreman/engine.rb b/lib/foreman/engine.rb index 94ac725..fbe9d38 100644 --- a/lib/foreman/engine.rb +++ b/lib/foreman/engine.rb @@ -74,7 +74,7 @@ private ###################################################################### def kill_all(signal="SIGTERM") running_processes.each do |pid, process| info "sending #{signal} to pid #{pid}" - Process.kill(signal, pid) rescue Errno::ESRCH + process.kill signal end end diff --git a/lib/foreman/process.rb b/lib/foreman/process.rb index e37bc17..bbabc80 100644 --- a/lib/foreman/process.rb +++ b/lib/foreman/process.rb @@ -25,6 +25,24 @@ class Foreman::Process "%s.%s" % [ entry.name, num ] end + def kill(signal) + pid && Process.kill(signal, pid) + rescue Errno::ESRCH + false + end + + def detach + pid && Process.detach(pid) + end + + def alive? + kill(0) + end + + def dead? + !alive? + end + private def fork_with_io(command) @@ -65,5 +83,4 @@ private ensure ENV.replace original end - end