diff options
author | Victor Stinner <victor.stinner@gmail.com> | 2014-02-18 21:06:35 (GMT) |
---|---|---|
committer | Victor Stinner <victor.stinner@gmail.com> | 2014-02-18 21:06:35 (GMT) |
commit | 5f47ac2aaab2a4f23897a680ed264e0ae2032b1c (patch) | |
tree | 060990d9ae7edfeb79584e9c5373c19f6859201b /Lib/subprocess.py | |
parent | 9a0cbcc4f8f6b61086629907767cd6f3d5ffe8f5 (diff) | |
parent | d5c8ce7cc03d81402b2fcdc023fb6ea44ac70f25 (diff) | |
download | cpython-5f47ac2aaab2a4f23897a680ed264e0ae2032b1c.zip cpython-5f47ac2aaab2a4f23897a680ed264e0ae2032b1c.tar.gz cpython-5f47ac2aaab2a4f23897a680ed264e0ae2032b1c.tar.bz2 |
(Merge 3.3) Issue #19612: On Windows, subprocess.Popen.communicate() now
ignores OSError(22, 'Invalid argument') when writing input data into stdin,
whereas the process already exited.
Diffstat (limited to 'Lib/subprocess.py')
-rw-r--r-- | Lib/subprocess.py | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/Lib/subprocess.py b/Lib/subprocess.py index f47f5ab..921670d 100644 --- a/Lib/subprocess.py +++ b/Lib/subprocess.py @@ -1186,7 +1186,15 @@ class Popen(object): try: self.stdin.write(input) except OSError as e: - if e.errno != errno.EPIPE: + if e.errno == errno.EPIPE: + # communicate() should ignore pipe full error + pass + elif (e.errno == errno.EINVAL + and self.poll() is not None): + # Issue #19612: stdin.write() fails with EINVAL + # if the process already exited before the write + pass + else: raise self.stdin.close() |