summaryrefslogtreecommitdiffstats
path: root/Lib/asyncio/base_subprocess.py
diff options
context:
space:
mode:
Diffstat (limited to 'Lib/asyncio/base_subprocess.py')
-rw-r--r--Lib/asyncio/base_subprocess.py35
1 files changed, 26 insertions, 9 deletions
diff --git a/Lib/asyncio/base_subprocess.py b/Lib/asyncio/base_subprocess.py
index 6dbde2b..9c2ba67 100644
--- a/Lib/asyncio/base_subprocess.py
+++ b/Lib/asyncio/base_subprocess.py
@@ -1,6 +1,9 @@
import collections
import subprocess
import warnings
+import os
+import signal
+import sys
from . import protocols
from . import transports
@@ -142,17 +145,31 @@ class BaseSubprocessTransport(transports.SubprocessTransport):
if self._proc is None:
raise ProcessLookupError()
- def send_signal(self, signal):
- self._check_proc()
- self._proc.send_signal(signal)
+ if sys.platform == 'win32':
+ def send_signal(self, signal):
+ self._check_proc()
+ self._proc.send_signal(signal)
+
+ def terminate(self):
+ self._check_proc()
+ self._proc.terminate()
+
+ def kill(self):
+ self._check_proc()
+ self._proc.kill()
+ else:
+ def send_signal(self, signal):
+ self._check_proc()
+ try:
+ os.kill(self._proc.pid, signal)
+ except ProcessLookupError:
+ pass
- def terminate(self):
- self._check_proc()
- self._proc.terminate()
+ def terminate(self):
+ self.send_signal(signal.SIGTERM)
- def kill(self):
- self._check_proc()
- self._proc.kill()
+ def kill(self):
+ self.send_signal(signal.SIGKILL)
async def _connect_pipes(self, waiter):
try: