New submission from Memeplex: When not using a timeout, communicate will raise a BrokenPipeError if the command returns an error code. For example:
sp = subprocess.Popen('cat --not-an-option', shell=True, stdin=subprocess.PIPE) time.sleep(.2) sp.communicate(b'hi\n') This isn't consistent with the behavior of communicate with a timeout, which doesn't raise the exception. Moreover, there is even a comment near the point of the exception stating that communicate must ignore BrokenPipeError: def _stdin_write(self, input): if input: try: self.stdin.write(input) except BrokenPipeError: # communicate() must ignore broken pipe error pass .... self.stdin.close() Obviously, the problem is that self.stdin.close() is outside the except clause. ---------- components: Library (Lib) messages: 260373 nosy: memeplex priority: normal severity: normal status: open title: Popen.communicate not ignoring BrokenPipeError type: behavior versions: Python 3.5 _______________________________________ Python tracker <rep...@bugs.python.org> <http://bugs.python.org/issue26372> _______________________________________ _______________________________________________ Python-bugs-list mailing list Unsubscribe: https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com