mirror of
https://github.com/python/cpython.git
synced 2025-08-31 05:58:33 +00:00
Fixes issue #15798: subprocess.Popen() no longer fails if file
descriptor 0, 1 or 2 is closed. (correct fix for 3.4 this time)
This commit is contained in:
parent
5a63aa62ca
commit
53dd8167ff
3 changed files with 31 additions and 0 deletions
|
@ -1341,6 +1341,13 @@ class Popen(object):
|
|||
# Data format: "exception name:hex errno:description"
|
||||
# Pickle is not used; it is complex and involves memory allocation.
|
||||
errpipe_read, errpipe_write = os.pipe()
|
||||
# errpipe_write must not be in the standard io 0, 1, or 2 fd range.
|
||||
low_fds_to_close = []
|
||||
while errpipe_write < 3:
|
||||
low_fds_to_close.append(errpipe_write)
|
||||
errpipe_write = os.dup(errpipe_write)
|
||||
for low_fd in low_fds_to_close:
|
||||
os.close(low_fd)
|
||||
try:
|
||||
try:
|
||||
# We must avoid complex work that could involve
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue