mirror of
https://github.com/python/cpython.git
synced 2024-11-28 04:15:11 +08:00
Fix issue #6973: When we know a subprocess.Popen process has died, do
not allow the send_signal(), terminate(), or kill() methods to do anything as they could potentially signal a different process.
This commit is contained in:
commit
2cd1b3b089
@ -1333,8 +1333,10 @@ class Popen(object):
|
||||
return (stdout, stderr)
|
||||
|
||||
def send_signal(self, sig):
|
||||
"""Send a signal to the process
|
||||
"""
|
||||
"""Send a signal to the process."""
|
||||
# Don't signal a process that we know has already died.
|
||||
if self.returncode is not None:
|
||||
return
|
||||
if sig == signal.SIGTERM:
|
||||
self.terminate()
|
||||
elif sig == signal.CTRL_C_EVENT:
|
||||
@ -1345,8 +1347,10 @@ class Popen(object):
|
||||
raise ValueError("Unsupported signal: {}".format(sig))
|
||||
|
||||
def terminate(self):
|
||||
"""Terminates the process
|
||||
"""
|
||||
"""Terminates the process."""
|
||||
# Don't terminate a process that we know has already died.
|
||||
if self.returncode is not None:
|
||||
return
|
||||
try:
|
||||
_winapi.TerminateProcess(self._handle, 1)
|
||||
except PermissionError:
|
||||
@ -1754,9 +1758,10 @@ class Popen(object):
|
||||
|
||||
|
||||
def send_signal(self, sig):
|
||||
"""Send a signal to the process
|
||||
"""
|
||||
os.kill(self.pid, sig)
|
||||
"""Send a signal to the process."""
|
||||
# Skip signalling a process that we know has already died.
|
||||
if self.returncode is None:
|
||||
os.kill(self.pid, sig)
|
||||
|
||||
def terminate(self):
|
||||
"""Terminate the process with SIGTERM
|
||||
|
@ -70,6 +70,10 @@ Core and Builtins
|
||||
Library
|
||||
-------
|
||||
|
||||
- Issue #6973: When we know a subprocess.Popen process has died, do
|
||||
not allow the send_signal(), terminate(), or kill() methods to do
|
||||
anything as they could potentially signal a different process.
|
||||
|
||||
- Issue #25590: In the Readline completer, only call getattr() once per
|
||||
attribute.
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user