Subprocesses are killed when CTRL + C
authorFrederic Massart <fred@moodle.com>
Mon, 7 Apr 2014 04:55:30 +0000 (12:55 +0800)
committerFrederic Massart <fred@moodle.com>
Mon, 7 Apr 2014 04:55:30 +0000 (12:55 +0800)
lib/tools.py

index 2d25845..264cba3 100644 (file)
@@ -130,8 +130,12 @@ def process(cmd, cwd=None, stdout=subprocess.PIPE, stderr=subprocess.PIPE):
     if type(cmd) != list:
         cmd = shlex.split(str(cmd))
     logging.debug(' '.join(cmd))
-    proc = subprocess.Popen(cmd, cwd=cwd, stdout=stdout, stderr=stderr)
-    (out, err) = proc.communicate()
+    try:
+        proc = subprocess.Popen(cmd, cwd=cwd, stdout=stdout, stderr=stderr)
+        (out, err) = proc.communicate()
+    except KeyboardInterrupt as e:
+        proc.kill()
+        raise e
     return (proc.returncode, out, err)