summaryrefslogtreecommitdiff
path: root/cmd2/utils.py
diff options
context:
space:
mode:
authorKevin Van Brunt <kmvanbrunt@gmail.com>2019-11-17 01:20:35 -0500
committerKevin Van Brunt <kmvanbrunt@gmail.com>2019-11-17 01:20:35 -0500
commit697ff1ae39e8ec3f1f1a1b9a36d68c66e8d286b2 (patch)
tree7b2dde5cdf7260ac48d104cd2b91d9f4753fe058 /cmd2/utils.py
parentb7b179a87623409e031753e0c0c9827251cf75ef (diff)
downloadcmd2-git-697ff1ae39e8ec3f1f1a1b9a36d68c66e8d286b2.tar.gz
Fixed bug where pipe processes were not being stopped by Ctrl-C on Linux/Mac
Diffstat (limited to 'cmd2/utils.py')
-rw-r--r--cmd2/utils.py7
1 files changed, 4 insertions, 3 deletions
diff --git a/cmd2/utils.py b/cmd2/utils.py
index 88fbc1da..e3d54ffe 100644
--- a/cmd2/utils.py
+++ b/cmd2/utils.py
@@ -520,10 +520,11 @@ class ProcReader(object):
"""Send a SIGINT to the process similar to if <Ctrl>+C were pressed."""
import signal
if sys.platform.startswith('win'):
- signal_to_send = signal.CTRL_C_EVENT
+ self._proc.send_signal(signal.CTRL_C_EVENT)
else:
- signal_to_send = signal.SIGINT
- self._proc.send_signal(signal_to_send)
+ # Since cmd2 uses shell=True in its Popen calls, we need to send the SIGINT to
+ # the whole process group to make sure it propagates further than the shell
+ os.killpg(os.getpgid(self._proc.pid), signal.SIGINT)
def terminate(self) -> None:
"""Terminate the process"""