PATH:
usr
/
share
/
doc
/
python-docs-2.7.5
/
html
/
_sources
/
library
:mod:`popen2` --- Subprocesses with accessible I/O streams ========================================================== .. module:: popen2 :synopsis: Subprocesses with accessible standard I/O streams. :deprecated: .. sectionauthor:: Drew Csillag <drew_csillag@geocities.com> .. deprecated:: 2.6 This module is obsolete. Use the :mod:`subprocess` module. Check especially the :ref:`subprocess-replacements` section. This module allows you to spawn processes and connect to their input/output/error pipes and obtain their return codes under Unix and Windows. The :mod:`subprocess` module provides more powerful facilities for spawning new processes and retrieving their results. Using the :mod:`subprocess` module is preferable to using the :mod:`popen2` module. The primary interface offered by this module is a trio of factory functions. For each of these, if *bufsize* is specified, it specifies the buffer size for the I/O pipes. *mode*, if provided, should be the string ``'b'`` or ``'t'``; on Windows this is needed to determine whether the file objects should be opened in binary or text mode. The default value for *mode* is ``'t'``. On Unix, *cmd* may be a sequence, in which case arguments will be passed directly to the program without shell intervention (as with :func:`os.spawnv`). If *cmd* is a string it will be passed to the shell (as with :func:`os.system`). The only way to retrieve the return codes for the child processes is by using the :meth:`poll` or :meth:`wait` methods on the :class:`Popen3` and :class:`Popen4` classes; these are only available on Unix. This information is not available when using the :func:`popen2`, :func:`popen3`, and :func:`popen4` functions, or the equivalent functions in the :mod:`os` module. (Note that the tuples returned by the :mod:`os` module's functions are in a different order from the ones returned by the :mod:`popen2` module.) .. function:: popen2(cmd[, bufsize[, mode]]) Executes *cmd* as a sub-process. Returns the file objects ``(child_stdout, child_stdin)``. .. function:: popen3(cmd[, bufsize[, mode]]) Executes *cmd* as a sub-process. Returns the file objects ``(child_stdout, child_stdin, child_stderr)``. .. function:: popen4(cmd[, bufsize[, mode]]) Executes *cmd* as a sub-process. Returns the file objects ``(child_stdout_and_stderr, child_stdin)``. .. versionadded:: 2.0 On Unix, a class defining the objects returned by the factory functions is also available. These are not used for the Windows implementation, and are not available on that platform. .. class:: Popen3(cmd[, capturestderr[, bufsize]]) This class represents a child process. Normally, :class:`Popen3` instances are created using the :func:`popen2` and :func:`popen3` factory functions described above. If not using one of the helper functions to create :class:`Popen3` objects, the parameter *cmd* is the shell command to execute in a sub-process. The *capturestderr* flag, if true, specifies that the object should capture standard error output of the child process. The default is false. If the *bufsize* parameter is specified, it specifies the size of the I/O buffers to/from the child process. .. class:: Popen4(cmd[, bufsize]) Similar to :class:`Popen3`, but always captures standard error into the same file object as standard output. These are typically created using :func:`popen4`. .. versionadded:: 2.0 .. _popen3-objects: Popen3 and Popen4 Objects ------------------------- Instances of the :class:`Popen3` and :class:`Popen4` classes have the following methods: .. method:: Popen3.poll() Returns ``-1`` if child process hasn't completed yet, or its status code (see :meth:`wait`) otherwise. .. method:: Popen3.wait() Waits for and returns the status code of the child process. The status code encodes both the return code of the process and information about whether it exited using the :c:func:`exit` system call or died due to a signal. Functions to help interpret the status code are defined in the :mod:`os` module; see section :ref:`os-process` for the :func:`W\*` family of functions. The following attributes are also available: .. attribute:: Popen3.fromchild A file object that provides output from the child process. For :class:`Popen4` instances, this will provide both the standard output and standard error streams. .. attribute:: Popen3.tochild A file object that provides input to the child process. .. attribute:: Popen3.childerr A file object that provides error output from the child process, if *capturestderr* was true for the constructor, otherwise ``None``. This will always be ``None`` for :class:`Popen4` instances. .. attribute:: Popen3.pid The process ID of the child process. .. _popen2-flow-control: Flow Control Issues ------------------- Any time you are working with any form of inter-process communication, control flow needs to be carefully thought out. This remains the case with the file objects provided by this module (or the :mod:`os` module equivalents). When reading output from a child process that writes a lot of data to standard error while the parent is reading from the child's standard output, a deadlock can occur. A similar situation can occur with other combinations of reads and writes. The essential factors are that more than :const:`_PC_PIPE_BUF` bytes are being written by one process in a blocking fashion, while the other process is reading from the first process, also in a blocking fashion. .. Example explanation and suggested work-arounds substantially stolen from Martin von Löwis: http://mail.python.org/pipermail/python-dev/2000-September/009460.html There are several ways to deal with this situation. The simplest application change, in many cases, will be to follow this model in the parent process:: import popen2 r, w, e = popen2.popen3('python slave.py') e.readlines() r.readlines() r.close() e.close() w.close() with code like this in the child:: import os import sys # note that each of these print statements # writes a single long string print >>sys.stderr, 400 * 'this is a test\n' os.close(sys.stderr.fileno()) print >>sys.stdout, 400 * 'this is another test\n' In particular, note that ``sys.stderr`` must be closed after writing all data, or :meth:`readlines` won't return. Also note that :func:`os.close` must be used, as ``sys.stderr.close()`` won't close ``stderr`` (otherwise assigning to ``sys.stderr`` will silently close it, so no further errors can be printed). Applications which need to support a more general approach should integrate I/O over pipes with their :func:`select` loops, or use separate threads to read each of the individual files provided by whichever :func:`popen\*` function or :class:`Popen\*` class was used. .. seealso:: Module :mod:`subprocess` Module for spawning and managing subprocesses.
[+]
..
[-] fpformat.txt
[edit]
[-] string.txt
[edit]
[-] aetypes.txt
[edit]
[-] textwrap.txt
[edit]
[-] codecs.txt
[edit]
[-] array.txt
[edit]
[-] urllib2.txt
[edit]
[-] pickle.txt
[edit]
[-] 2to3.txt
[edit]
[-] ossaudiodev.txt
[edit]
[-] markup.txt
[edit]
[-] sha.txt
[edit]
[-] stat.txt
[edit]
[-] itertools.txt
[edit]
[-] numeric.txt
[edit]
[-] gzip.txt
[edit]
[-] pkgutil.txt
[edit]
[-] subprocess.txt
[edit]
[-] token.txt
[edit]
[-] debug.txt
[edit]
[-] dummy_thread.txt
[edit]
[-] mimify.txt
[edit]
[-] bastion.txt
[edit]
[-] popen2.txt
[edit]
[-] autogil.txt
[edit]
[-] importlib.txt
[edit]
[-] io.txt
[edit]
[-] msilib.txt
[edit]
[-] development.txt
[edit]
[-] hotshot.txt
[edit]
[-] constants.txt
[edit]
[-] curses.ascii.txt
[edit]
[-] os.txt
[edit]
[-] easydialogs.txt
[edit]
[-] mutex.txt
[edit]
[-] md5.txt
[edit]
[-] stdtypes.txt
[edit]
[-] bz2.txt
[edit]
[-] imgfile.txt
[edit]
[-] aetools.txt
[edit]
[-] internet.txt
[edit]
[-] xml.dom.pulldom.txt
[edit]
[-] cookie.txt
[edit]
[-] sunau.txt
[edit]
[-] archiving.txt
[edit]
[-] modules.txt
[edit]
[-] base64.txt
[edit]
[-] ttk.txt
[edit]
[-] tty.txt
[edit]
[-] cookielib.txt
[edit]
[-] pydoc.txt
[edit]
[-] misc.txt
[edit]
[-] fm.txt
[edit]
[-] whichdb.txt
[edit]
[-] imghdr.txt
[edit]
[-] datatypes.txt
[edit]
[-] dis.txt
[edit]
[-] datetime.txt
[edit]
[-] userdict.txt
[edit]
[-] py_compile.txt
[edit]
[-] imputil.txt
[edit]
[-] xml.dom.minidom.txt
[edit]
[-] multiprocessing.txt
[edit]
[-] functools.txt
[edit]
[-] audioop.txt
[edit]
[-] language.txt
[edit]
[-] miniaeframe.txt
[edit]
[-] ssl.txt
[edit]
[-] copy_reg.txt
[edit]
[-] heapq.txt
[edit]
[-] syslog.txt
[edit]
[-] fileformats.txt
[edit]
[-] simplexmlrpcserver.txt
[edit]
[-] numbers.txt
[edit]
[-] pipes.txt
[edit]
[-] shutil.txt
[edit]
[-] zlib.txt
[edit]
[-] optparse.txt
[edit]
[-] allos.txt
[edit]
[-] custominterp.txt
[edit]
[-] windows.txt
[edit]
[-] dbm.txt
[edit]
[-] select.txt
[edit]
[-] time.txt
[edit]
[-] index.txt
[edit]
[-] undoc.txt
[edit]
[-] plistlib.txt
[edit]
[-] htmllib.txt
[edit]
[-] warnings.txt
[edit]
[-] functions.txt
[edit]
[-] argparse.txt
[edit]
[-] distutils.txt
[edit]
[-] macpath.txt
[edit]
[-] fnmatch.txt
[edit]
[-] tabnanny.txt
[edit]
[-] calendar.txt
[edit]
[-] jpeg.txt
[edit]
[-] zipimport.txt
[edit]
[-] unix.txt
[edit]
[-] chunk.txt
[edit]
[-] smtplib.txt
[edit]
[-] tokenize.txt
[edit]
[-] asynchat.txt
[edit]
[-] decimal.txt
[edit]
[-] cd.txt
[edit]
[-] pickletools.txt
[edit]
[-] statvfs.txt
[edit]
[-] gettext.txt
[edit]
[-] sqlite3.txt
[edit]
[-] imageop.txt
[edit]
[-] dl.txt
[edit]
[-] logging.handlers.txt
[edit]
[-] zipfile.txt
[edit]
[-] copy.txt
[edit]
[-] sched.txt
[edit]
[-] nis.txt
[edit]
[-] timeit.txt
[edit]
[-] weakref.txt
[edit]
[-] mailbox.txt
[edit]
[-] othergui.txt
[edit]
[-] sgmllib.txt
[edit]
[-] mimewriter.txt
[edit]
[-] email.charset.txt
[edit]
[-] mmap.txt
[edit]
[-] xmlrpclib.txt
[edit]
[-] robotparser.txt
[edit]
[-] xml.sax.reader.txt
[edit]
[-] hmac.txt
[edit]
[-] collections.txt
[edit]
[-] mimetools.txt
[edit]
[-] aifc.txt
[edit]
[-] modulefinder.txt
[edit]
[-] socketserver.txt
[edit]
[-] grp.txt
[edit]
[-] getopt.txt
[edit]
[-] __future__.txt
[edit]
[-] binascii.txt
[edit]
[-] symtable.txt
[edit]
[-] crypt.txt
[edit]
[-] email.encoders.txt
[edit]
[-] imaplib.txt
[edit]
[-] spwd.txt
[edit]
[-] wsgiref.txt
[edit]
[-] errno.txt
[edit]
[-] email-examples.txt
[edit]
[-] sun.txt
[edit]
[-] doctest.txt
[edit]
[-] resource.txt
[edit]
[-] asyncore.txt
[edit]
[-] curses.panel.txt
[edit]
[-] imp.txt
[edit]
[-] htmlparser.txt
[edit]
[-] thread.txt
[edit]
[-] posix.txt
[edit]
[-] repr.txt
[edit]
[-] macostools.txt
[edit]
[-] colorsys.txt
[edit]
[-] bdb.txt
[edit]
[-] stringio.txt
[edit]
[-] mm.txt
[edit]
[-] cgi.txt
[edit]
[-] math.txt
[edit]
[-] httplib.txt
[edit]
[-] urlparse.txt
[edit]
[-] aepack.txt
[edit]
[-] colorpicker.txt
[edit]
[-] binhex.txt
[edit]
[-] tk.txt
[edit]
[-] xml.txt
[edit]
[-] webbrowser.txt
[edit]
[-] contextlib.txt
[edit]
[-] types.txt
[edit]
[-] shelve.txt
[edit]
[-] platform.txt
[edit]
[-] readline.txt
[edit]
[-] locale.txt
[edit]
[-] sets.txt
[edit]
[-] macosa.txt
[edit]
[-] bisect.txt
[edit]
[-] email.parser.txt
[edit]
[-] xml.sax.txt
[edit]
[-] xml.etree.elementtree.txt
[edit]
[-] netrc.txt
[edit]
[-] new.txt
[edit]
[-] bsddb.txt
[edit]
[-] fl.txt
[edit]
[-] curses.txt
[edit]
[-] hashlib.txt
[edit]
[-] tarfile.txt
[edit]
[-] ftplib.txt
[edit]
[-] telnetlib.txt
[edit]
[-] macos.txt
[edit]
[-] multifile.txt
[edit]
[-] dbhash.txt
[edit]
[-] netdata.txt
[edit]
[-] fileinput.txt
[edit]
[-] python.txt
[edit]
[-] mac.txt
[edit]
[-] filesys.txt
[edit]
[-] scrolledtext.txt
[edit]
[-] compiler.txt
[edit]
[-] tkinter.txt
[edit]
[-] random.txt
[edit]
[-] mailcap.txt
[edit]
[-] fpectl.txt
[edit]
[-] fcntl.txt
[edit]
[-] ipc.txt
[edit]
[-] formatter.txt
[edit]
[-] profile.txt
[edit]
[-] xml.dom.txt
[edit]
[-] email.iterators.txt
[edit]
[-] logging.config.txt
[edit]
[-] rlcompleter.txt
[edit]
[-] idle.txt
[edit]
[-] gdbm.txt
[edit]
[-] ast.txt
[edit]
[-] someos.txt
[edit]
[-] cmd.txt
[edit]
[-] re.txt
[edit]
[-] docxmlrpcserver.txt
[edit]
[-] pdb.txt
[edit]
[-] rexec.txt
[edit]
[-] commands.txt
[edit]
[-] restricted.txt
[edit]
[-] crypto.txt
[edit]
[-] dumbdbm.txt
[edit]
[-] email.txt
[edit]
[-] linecache.txt
[edit]
[-] os.path.txt
[edit]
[-] cgitb.txt
[edit]
[-] _winreg.txt
[edit]
[-] carbon.txt
[edit]
[-] turtle.txt
[edit]
[-] xml.sax.handler.txt
[edit]
[-] json.txt
[edit]
[-] email.generator.txt
[edit]
[-] struct.txt
[edit]
[-] mhlib.txt
[edit]
[-] uuid.txt
[edit]
[-] threading.txt
[edit]
[-] mimetypes.txt
[edit]
[-] traceback.txt
[edit]
[-] filecmp.txt
[edit]
[-] sndhdr.txt
[edit]
[-] logging.txt
[edit]
[-] getpass.txt
[edit]
[-] dummy_threading.txt
[edit]
[-] abc.txt
[edit]
[-] shlex.txt
[edit]
[-] email.mime.txt
[edit]
[-] fractions.txt
[edit]
[-] email.header.txt
[edit]
[-] marshal.txt
[edit]
[-] symbol.txt
[edit]
[-] wave.txt
[edit]
[-] urllib.txt
[edit]
[-] queue.txt
[edit]
[-] operator.txt
[edit]
[-] compileall.txt
[edit]
[-] sysconfig.txt
[edit]
[-] quopri.txt
[edit]
[-] inspect.txt
[edit]
[-] xdrlib.txt
[edit]
[-] __builtin__.txt
[edit]
[-] ic.txt
[edit]
[-] signal.txt
[edit]
[-] dircache.txt
[edit]
[-] rfc822.txt
[edit]
[-] glob.txt
[edit]
[-] stringprep.txt
[edit]
[-] tix.txt
[edit]
[-] i18n.txt
[edit]
[-] email.util.txt
[edit]
[-] anydbm.txt
[edit]
[-] code.txt
[edit]
[-] __main__.txt
[edit]
[-] difflib.txt
[edit]
[-] unicodedata.txt
[edit]
[-] sunaudio.txt
[edit]
[-] msvcrt.txt
[edit]
[-] site.txt
[edit]
[-] codeop.txt
[edit]
[-] uu.txt
[edit]
[-] winsound.txt
[edit]
[-] smtpd.txt
[edit]
[-] al.txt
[edit]
[-] user.txt
[edit]
[-] poplib.txt
[edit]
[-] nntplib.txt
[edit]
[-] keyword.txt
[edit]
[-] ctypes.txt
[edit]
[-] socket.txt
[edit]
[-] simplehttpserver.txt
[edit]
[-] sys.txt
[edit]
[-] pyexpat.txt
[edit]
[-] configparser.txt
[edit]
[-] persistence.txt
[edit]
[-] trace.txt
[edit]
[-] runpy.txt
[edit]
[-] csv.txt
[edit]
[-] test.txt
[edit]
[-] framework.txt
[edit]
[-] gc.txt
[edit]
[-] cmath.txt
[edit]
[-] exceptions.txt
[edit]
[-] pyclbr.txt
[edit]
[-] sgi.txt
[edit]
[-] parser.txt
[edit]
[-] future_builtins.txt
[edit]
[-] pwd.txt
[edit]
[-] strings.txt
[edit]
[-] frameworks.txt
[edit]
[-] email.message.txt
[edit]
[-] cgihttpserver.txt
[edit]
[-] intro.txt
[edit]
[-] email.errors.txt
[edit]
[-] pprint.txt
[edit]
[-] pty.txt
[edit]
[-] xml.sax.utils.txt
[edit]
[-] posixfile.txt
[edit]
[-] tempfile.txt
[edit]
[-] termios.txt
[edit]
[-] gl.txt
[edit]
[-] gensuitemodule.txt
[edit]
[-] atexit.txt
[edit]
[-] basehttpserver.txt
[edit]
[-] unittest.txt
[edit]