[Python-Dev] subprocess, buffered files, pipes and broken pipe errors
Serhiy Storchaka
storchaka at gmail.com
Fri Mar 6 16:10:44 CET 2015
On 06.03.15 14:53, Victor Stinner wrote:
> I propose to ignore BrokenPipeError in Popen.__exit__, as done in
> communicate(), for convinience:
> http://bugs.python.org/issue23570
>
> Serhiy wants to keep BrokenPipeError, he wrote that file.close()
> should not ignore write errors (read the issue for details).
I rather said about file.__exit__.
> I consider that BrokenPipeError on a pipe is different than a write
> error on a regular file.
>
> EPIPE and SIGPIPE are designed to notify that the pipe is closed and
> that it's now inefficient to continue to write into this pipe.
And into the file like open('/dev/stdout', 'wb').
> Ignoring BrokenPipeError in Popen.__exit__() respects this constrain
> because the method closes stdin and only returns when the process
> exited. So the caller will not write anything into stdin anymore.
And the caller will not write anything into the file after calling
file.__exit__.
I don't see large difference between open('file', 'wb') and Popen('cat
>file', stdin=PIPE), between sys.stdout with redirecting stdout and
running external program with Pipe().
More information about the Python-Dev
mailing list