(Merge 3.4) asyncio, tulip issue 190: Process.communicate() must ignore

BrokenPipeError

If you want to handle the BrokenPipeError, you can easily reimplement
communicate().

Add also a unit test to ensure that stdin.write() + stdin.drain() raises
BrokenPipeError.
This commit is contained in:
Victor Stinner 2014-07-17 12:48:33 +02:00
commit 0d35741b16
3 changed files with 32 additions and 8 deletions

View file

@ -191,6 +191,10 @@ Process
process, or ``None``, if no data should be sent to the child. The type
of *input* must be bytes.
If a :exc:`BrokenPipeError` is raised when writing *input* into stdin,
the exception is ignored. It occurs when the process exits before all
data are written into stdin.
:meth:`communicate` returns a tuple ``(stdoutdata, stderrdata)``.
Note that if you want to send data to the process's stdin, you need to
@ -205,6 +209,9 @@ Process
This method is a :ref:`coroutine <coroutine>`.
.. versionchanged:: 3.4.2
The method now ignores :exc:`BrokenPipeError`.
.. method:: kill()
Kills the child. On Posix OSs the function sends :py:data:`SIGKILL` to