From e5ad5f6561a7e6e73b7abab5da5b5ac49c558518 Mon Sep 17 00:00:00 2001 From: Avner Lavi Date: Tue, 19 Sep 2023 09:29:22 +0300 Subject: [PATCH] copy of https://github.com/ddollar/foreman/pull/780 --- lib/foreman/engine.rb | 4 ++-- lib/foreman/process.rb | 6 ++++-- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/lib/foreman/engine.rb b/lib/foreman/engine.rb index a1316593..3b2c32b7 100644 --- a/lib/foreman/engine.rb +++ b/lib/foreman/engine.rb @@ -191,14 +191,14 @@ def kill_children(signal="SIGTERM") @running.each do |pid, (process, index)| system "sending #{signal} to #{name_for(pid)} at pid #{pid}" begin - Process.kill(signal, pid) + Process.kill("-#{signal}", pid) rescue Errno::ESRCH, Errno::EPERM end end else begin pids = @running.keys.compact - Process.kill signal, *pids unless pids.empty? + Process.kill("-#{signal}", *pids) unless pids.empty? rescue Errno::ESRCH, Errno::EPERM end end diff --git a/lib/foreman/process.rb b/lib/foreman/process.rb index ee3de948..ec0746b9 100644 --- a/lib/foreman/process.rb +++ b/lib/foreman/process.rb @@ -49,9 +49,11 @@ def run(options={}) env = @options[:env].merge(options[:env] || {}) output = options[:output] || $stdout runner = "#{Foreman.runner}".shellescape - + + pgroup = Foreman.windows? ? :new_pgroup : :pgroup + Dir.chdir(cwd) do - Process.spawn env, expanded_command(env), :out => output, :err => output + Process.spawn env, expanded_command(env), :out => output, :err => output, pgroup => true end end