diff --git a/Library/Homebrew/system_command.rb b/Library/Homebrew/system_command.rb index 1e86eeead6..c8339c829c 100644 --- a/Library/Homebrew/system_command.rb +++ b/Library/Homebrew/system_command.rb @@ -167,7 +167,7 @@ class SystemCommand options = { # Create a new process group so that we can send `SIGINT` from # parent to child rather than the child receiving `SIGINT` directly. - pgroup: true, + pgroup: sudo? ? nil : true, } options[:chdir] = chdir if chdir @@ -183,7 +183,7 @@ class SystemCommand @status = raw_wait_thr.value rescue Interrupt - Process.kill("INT", pid) if pid + Process.kill("INT", pid) if pid && !sudo? raise Interrupt rescue SystemCallError => e @status = $CHILD_STATUS diff --git a/Library/Homebrew/test/system_command_spec.rb b/Library/Homebrew/test/system_command_spec.rb index 0ade6a87c6..b1da8157f0 100644 --- a/Library/Homebrew/test/system_command_spec.rb +++ b/Library/Homebrew/test/system_command_spec.rb @@ -55,7 +55,7 @@ describe SystemCommand do .to receive(:popen3) .with( an_instance_of(Hash), ["/usr/bin/sudo", "/usr/bin/sudo"], "-E", "--", - "/usr/bin/env", "A=1", "B=2", "C=3", "env", *env_args, pgroup: true + "/usr/bin/env", "A=1", "B=2", "C=3", "env", *env_args, pgroup: nil ) .and_wrap_original do |original_popen3, *_, &block| original_popen3.call("true", &block)