issue1606: Add warnings to the subprocess documentation about common pitfalls

of using pipes that cause deadlocks.
This commit is contained in:
Gregory P. Smith 2008-08-04 01:03:50 +00:00
parent 814820bb28
commit 0879250284
1 changed files with 16 additions and 0 deletions

View File

@ -193,6 +193,10 @@ Instances of the :class:`Popen` class have the following methods:
Wait for child process to terminate. Set and return :attr:`returncode`
attribute.
warning:: This will deadlock if the child process generates enough output
to a stdout or stderr pipe causing it to block waiting for the OS's pipe
buffer to accept more data.
.. method:: Popen.communicate(input=None)
@ -250,18 +254,30 @@ The following attributes are also available:
If the *stdin* argument is ``PIPE``, this attribute is a file object that
provides input to the child process. Otherwise, it is ``None``.
warning:: Use :meth:`communicate` rather than .stdin.write() to avoid
deadlocks due to any of the other pipe buffers filling up and blocking the
child process.
.. attribute:: Popen.stdout
If the *stdout* argument is ``PIPE``, this attribute is a file object that
provides output from the child process. Otherwise, it is ``None``.
warning:: Use :meth:`communicate` rather than .stdout.read() to avoid
deadlocks due to any of the other pipe buffers filling up and blocking the
child process.
.. attribute:: Popen.stderr
If the *stderr* argument is ``PIPE``, this attribute is file object that
provides error output from the child process. Otherwise, it is ``None``.
warning:: Use :meth:`communicate` rather than .stderr.read() to avoid
deadlocks due to any of the other pipe buffers filling up and blocking the
child process.
.. attribute:: Popen.pid