• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1
2:mod:`subprocess` --- Subprocess management
3===========================================
4
5.. module:: subprocess
6   :synopsis: Subprocess management.
7.. moduleauthor:: Peter Åstrand <astrand@lysator.liu.se>
8.. sectionauthor:: Peter Åstrand <astrand@lysator.liu.se>
9
10
11.. versionadded:: 2.4
12
13The :mod:`subprocess` module allows you to spawn new processes, connect to their
14input/output/error pipes, and obtain their return codes.  This module intends to
15replace several older modules and functions::
16
17   os.system
18   os.spawn*
19   os.popen*
20   popen2.*
21   commands.*
22
23Information about how this module can be used to replace the older
24functions can be found in the subprocess-replacements_ section.
25
26.. seealso::
27
28   POSIX users (Linux, BSD, etc.) are strongly encouraged to install
29   and use the much more recent subprocess32_ module instead of the
30   version included with python 2.7.  It is a drop in replacement with
31   better behavior in many situations.
32
33   :pep:`324` -- PEP proposing the subprocess module
34
35.. _subprocess32: https://pypi.org/project/subprocess32/
36
37Using the :mod:`subprocess` Module
38----------------------------------
39
40The recommended way to launch subprocesses is to use the following
41convenience functions.  For more advanced use cases when these do not
42meet your needs, use the underlying :class:`Popen` interface.
43
44
45.. function:: call(args, *, stdin=None, stdout=None, stderr=None, shell=False)
46
47   Run the command described by *args*.  Wait for command to complete, then
48   return the :attr:`returncode` attribute.
49
50   The arguments shown above are merely the most common ones, described below
51   in :ref:`frequently-used-arguments` (hence the slightly odd notation in
52   the abbreviated signature). The full function signature is the same as
53   that of the :class:`Popen` constructor - this functions passes all
54   supplied arguments directly through to that interface.
55
56   Examples::
57
58      >>> subprocess.call(["ls", "-l"])
59      0
60
61      >>> subprocess.call("exit 1", shell=True)
62      1
63
64   .. warning::
65
66      Using ``shell=True`` can be a security hazard.  See the warning
67      under :ref:`frequently-used-arguments` for details.
68
69   .. note::
70
71      Do not use ``stdout=PIPE`` or ``stderr=PIPE`` with this function
72      as that can deadlock based on the child process output volume.
73      Use :class:`Popen` with the :meth:`communicate` method when you
74      need pipes.
75
76
77.. function:: check_call(args, *, stdin=None, stdout=None, stderr=None, shell=False)
78
79   Run command with arguments.  Wait for command to complete. If the return
80   code was zero then return, otherwise raise :exc:`CalledProcessError`. The
81   :exc:`CalledProcessError` object will have the return code in the
82   :attr:`~CalledProcessError.returncode` attribute.
83
84   The arguments shown above are merely the most common ones, described below
85   in :ref:`frequently-used-arguments` (hence the slightly odd notation in
86   the abbreviated signature). The full function signature is the same as
87   that of the :class:`Popen` constructor - this functions passes all
88   supplied arguments directly through to that interface.
89
90   Examples::
91
92      >>> subprocess.check_call(["ls", "-l"])
93      0
94
95      >>> subprocess.check_call("exit 1", shell=True)
96      Traceback (most recent call last):
97         ...
98      subprocess.CalledProcessError: Command 'exit 1' returned non-zero exit status 1
99
100   .. versionadded:: 2.5
101
102   .. warning::
103
104      Using ``shell=True`` can be a security hazard.  See the warning
105      under :ref:`frequently-used-arguments` for details.
106
107   .. note::
108
109      Do not use ``stdout=PIPE`` or ``stderr=PIPE`` with this function
110      as that can deadlock based on the child process output volume.
111      Use :class:`Popen` with the :meth:`communicate` method when you
112      need pipes.
113
114
115.. function:: check_output(args, *, stdin=None, stderr=None, shell=False, universal_newlines=False)
116
117   Run command with arguments and return its output as a byte string.
118
119   If the return code was non-zero it raises a :exc:`CalledProcessError`. The
120   :exc:`CalledProcessError` object will have the return code in the
121   :attr:`~CalledProcessError.returncode` attribute and any output in the
122   :attr:`~CalledProcessError.output` attribute.
123
124   The arguments shown above are merely the most common ones, described below
125   in :ref:`frequently-used-arguments` (hence the slightly odd notation in
126   the abbreviated signature). The full function signature is largely the
127   same as that of the :class:`Popen` constructor, except that *stdout* is
128   not permitted as it is used internally. All other supplied arguments are
129   passed directly through to the :class:`Popen` constructor.
130
131   Examples::
132
133      >>> subprocess.check_output(["echo", "Hello World!"])
134      'Hello World!\n'
135
136      >>> subprocess.check_output("exit 1", shell=True)
137      Traceback (most recent call last):
138         ...
139      subprocess.CalledProcessError: Command 'exit 1' returned non-zero exit status 1
140
141   To also capture standard error in the result, use
142   ``stderr=subprocess.STDOUT``::
143
144      >>> subprocess.check_output(
145      ...     "ls non_existent_file; exit 0",
146      ...     stderr=subprocess.STDOUT,
147      ...     shell=True)
148      'ls: non_existent_file: No such file or directory\n'
149
150   .. versionadded:: 2.7
151
152   .. warning::
153
154      Using ``shell=True`` can be a security hazard.  See the warning
155      under :ref:`frequently-used-arguments` for details.
156
157   .. note::
158
159      Do not use ``stderr=PIPE`` with this function as that can deadlock
160      based on the child process error volume.  Use :class:`Popen` with
161      the :meth:`communicate` method when you need a stderr pipe.
162
163
164.. data:: PIPE
165
166   Special value that can be used as the *stdin*, *stdout* or *stderr* argument
167   to :class:`Popen` and indicates that a pipe to the standard stream should be
168   opened.
169
170
171.. data:: STDOUT
172
173   Special value that can be used as the *stderr* argument to :class:`Popen` and
174   indicates that standard error should go into the same handle as standard
175   output.
176
177
178.. exception:: CalledProcessError
179
180    Exception raised when a process run by :func:`check_call` or
181    :func:`check_output` returns a non-zero exit status.
182
183    .. attribute:: returncode
184
185        Exit status of the child process.
186
187    .. attribute:: cmd
188
189        Command that was used to spawn the child process.
190
191    .. attribute:: output
192
193        Output of the child process if this exception is raised by
194        :func:`check_output`.  Otherwise, ``None``.
195
196
197
198.. _frequently-used-arguments:
199
200Frequently Used Arguments
201^^^^^^^^^^^^^^^^^^^^^^^^^
202
203To support a wide variety of use cases, the :class:`Popen` constructor (and
204the convenience functions) accept a large number of optional arguments. For
205most typical use cases, many of these arguments can be safely left at their
206default values. The arguments that are most commonly needed are:
207
208   *args* is required for all calls and should be a string, or a sequence of
209   program arguments. Providing a sequence of arguments is generally
210   preferred, as it allows the module to take care of any required escaping
211   and quoting of arguments (e.g. to permit spaces in file names). If passing
212   a single string, either *shell* must be :const:`True` (see below) or else
213   the string must simply name the program to be executed without specifying
214   any arguments.
215
216   *stdin*, *stdout* and *stderr* specify the executed program's standard input,
217   standard output and standard error file handles, respectively.  Valid values
218   are :data:`PIPE`, an existing file descriptor (a positive integer), an
219   existing file object, and ``None``.  :data:`PIPE` indicates that a new pipe
220   to the child should be created.  With the default settings of ``None``, no
221   redirection will occur; the child's file handles will be inherited from the
222   parent.  Additionally, *stderr* can be :data:`STDOUT`, which indicates that
223   the stderr data from the child process should be captured into the same file
224   handle as for stdout.
225
226   .. index::
227      single: universal newlines; subprocess module
228
229   When *stdout* or *stderr* are pipes and *universal_newlines* is
230   ``True`` then all line endings will be converted to ``'\n'`` as described
231   for the :term:`universal newlines` ``'U'`` mode argument to :func:`open`.
232
233   If *shell* is ``True``, the specified command will be executed through
234   the shell.  This can be useful if you are using Python primarily for the
235   enhanced control flow it offers over most system shells and still want
236   convenient access to other shell features such as shell pipes, filename
237   wildcards, environment variable expansion, and expansion of ``~`` to a
238   user's home directory.  However, note that Python itself offers
239   implementations of many shell-like features (in particular, :mod:`glob`,
240   :mod:`fnmatch`, :func:`os.walk`, :func:`os.path.expandvars`,
241   :func:`os.path.expanduser`, and :mod:`shutil`).
242
243   .. warning::
244
245      Executing shell commands that incorporate unsanitized input from an
246      untrusted source makes a program vulnerable to `shell injection
247      <http://en.wikipedia.org/wiki/Shell_injection#Shell_injection>`_,
248      a serious security flaw which can result in arbitrary command execution.
249      For this reason, the use of ``shell=True`` is **strongly discouraged**
250      in cases where the command string is constructed from external input::
251
252         >>> from subprocess import call
253         >>> filename = input("What file would you like to display?\n")
254         What file would you like to display?
255         non_existent; rm -rf / #
256         >>> call("cat " + filename, shell=True) # Uh-oh. This will end badly...
257
258      ``shell=False`` disables all shell based features, but does not suffer
259      from this vulnerability; see the Note in the :class:`Popen` constructor
260      documentation for helpful hints in getting ``shell=False`` to work.
261
262      When using ``shell=True``, :func:`pipes.quote` can be used to properly
263      escape whitespace and shell metacharacters in strings that are going to
264      be used to construct shell commands.
265
266These options, along with all of the other options, are described in more
267detail in the :class:`Popen` constructor documentation.
268
269
270Popen Constructor
271^^^^^^^^^^^^^^^^^
272
273The underlying process creation and management in this module is handled by
274the :class:`Popen` class. It offers a lot of flexibility so that developers
275are able to handle the less common cases not covered by the convenience
276functions.
277
278
279.. class:: Popen(args, bufsize=0, executable=None, stdin=None, stdout=None, \
280                 stderr=None, preexec_fn=None, close_fds=False, shell=False, \
281                 cwd=None, env=None, universal_newlines=False, \
282                 startupinfo=None, creationflags=0)
283
284   Execute a child program in a new process.  On Unix, the class uses
285   :meth:`os.execvp`-like behavior to execute the child program.  On Windows,
286   the class uses the Windows ``CreateProcess()`` function.  The arguments to
287   :class:`Popen` are as follows.
288
289   *args* should be a sequence of program arguments or else a single string.
290   By default, the program to execute is the first item in *args* if *args* is
291   a sequence.  If *args* is a string, the interpretation is
292   platform-dependent and described below.  See the *shell* and *executable*
293   arguments for additional differences from the default behavior.  Unless
294   otherwise stated, it is recommended to pass *args* as a sequence.
295
296   On Unix, if *args* is a string, the string is interpreted as the name or
297   path of the program to execute.  However, this can only be done if not
298   passing arguments to the program.
299
300   .. note::
301
302      :meth:`shlex.split` can be useful when determining the correct
303      tokenization for *args*, especially in complex cases::
304
305         >>> import shlex, subprocess
306         >>> command_line = raw_input()
307         /bin/vikings -input eggs.txt -output "spam spam.txt" -cmd "echo '$MONEY'"
308         >>> args = shlex.split(command_line)
309         >>> print args
310         ['/bin/vikings', '-input', 'eggs.txt', '-output', 'spam spam.txt', '-cmd', "echo '$MONEY'"]
311         >>> p = subprocess.Popen(args) # Success!
312
313      Note in particular that options (such as *-input*) and arguments (such
314      as *eggs.txt*) that are separated by whitespace in the shell go in separate
315      list elements, while arguments that need quoting or backslash escaping when
316      used in the shell (such as filenames containing spaces or the *echo* command
317      shown above) are single list elements.
318
319   On Windows, if *args* is a sequence, it will be converted to a string in a
320   manner described in :ref:`converting-argument-sequence`.  This is because
321   the underlying ``CreateProcess()`` operates on strings.
322
323   The *shell* argument (which defaults to ``False``) specifies whether to use
324   the shell as the program to execute.  If *shell* is ``True``, it is
325   recommended to pass *args* as a string rather than as a sequence.
326
327   On Unix with ``shell=True``, the shell defaults to :file:`/bin/sh`.  If
328   *args* is a string, the string specifies the command
329   to execute through the shell.  This means that the string must be
330   formatted exactly as it would be when typed at the shell prompt.  This
331   includes, for example, quoting or backslash escaping filenames with spaces in
332   them.  If *args* is a sequence, the first item specifies the command string, and
333   any additional items will be treated as additional arguments to the shell
334   itself.  That is to say, :class:`Popen` does the equivalent of::
335
336      Popen(['/bin/sh', '-c', args[0], args[1], ...])
337
338   On Windows with ``shell=True``, the :envvar:`COMSPEC` environment variable
339   specifies the default shell.  The only time you need to specify
340   ``shell=True`` on Windows is when the command you wish to execute is built
341   into the shell (e.g. :command:`dir` or :command:`copy`).  You do not need
342   ``shell=True`` to run a batch file or console-based executable.
343
344   .. warning::
345
346      Passing ``shell=True`` can be a security hazard if combined with
347      untrusted input.  See the warning under :ref:`frequently-used-arguments`
348      for details.
349
350   *bufsize*, if given, has the same meaning as the corresponding argument to the
351   built-in open() function: :const:`0` means unbuffered, :const:`1` means line
352   buffered, any other positive value means use a buffer of (approximately) that
353   size.  A negative *bufsize* means to use the system default, which usually means
354   fully buffered.  The default value for *bufsize* is :const:`0` (unbuffered).
355
356   .. note::
357
358      If you experience performance issues, it is recommended that you try to
359      enable buffering by setting *bufsize* to either -1 or a large enough
360      positive value (such as 4096).
361
362   The *executable* argument specifies a replacement program to execute.   It
363   is very seldom needed.  When ``shell=False``, *executable* replaces the
364   program to execute specified by *args*.  However, the original *args* is
365   still passed to the program.  Most programs treat the program specified
366   by *args* as the command name, which can then be different from the program
367   actually executed.  On Unix, the *args* name
368   becomes the display name for the executable in utilities such as
369   :program:`ps`.  If ``shell=True``, on Unix the *executable* argument
370   specifies a replacement shell for the default :file:`/bin/sh`.
371
372   *stdin*, *stdout* and *stderr* specify the executed program's standard input,
373   standard output and standard error file handles, respectively.  Valid values
374   are :data:`PIPE`, an existing file descriptor (a positive integer), an
375   existing file object, and ``None``.  :data:`PIPE` indicates that a new pipe
376   to the child should be created.  With the default settings of ``None``, no
377   redirection will occur; the child's file handles will be inherited from the
378   parent.  Additionally, *stderr* can be :data:`STDOUT`, which indicates that
379   the stderr data from the child process should be captured into the same file
380   handle as for stdout.
381
382   If *preexec_fn* is set to a callable object, this object will be called in the
383   child process just before the child is executed. (Unix only)
384
385   If *close_fds* is true, all file descriptors except :const:`0`, :const:`1` and
386   :const:`2` will be closed before the child process is executed. (Unix only).
387   Or, on Windows, if *close_fds* is true then no handles will be inherited by the
388   child process.  Note that on Windows, you cannot set *close_fds* to true and
389   also redirect the standard handles by setting *stdin*, *stdout* or *stderr*.
390
391   If *cwd* is not ``None``, the child's current directory will be changed to *cwd*
392   before it is executed.  Note that this directory is not considered when
393   searching the executable, so you can't specify the program's path relative to
394   *cwd*.
395
396   If *env* is not ``None``, it must be a mapping that defines the environment
397   variables for the new process; these are used instead of inheriting the current
398   process' environment, which is the default behavior.
399
400   .. note::
401
402      If specified, *env* must provide any variables required
403      for the program to execute.  On Windows, in order to run a
404      `side-by-side assembly`_ the specified *env* **must** include a valid
405      :envvar:`SystemRoot`.
406
407   .. _side-by-side assembly: https://en.wikipedia.org/wiki/Side-by-Side_Assembly
408
409   If *universal_newlines* is ``True``, the file objects *stdout* and *stderr*
410   are opened as text files in :term:`universal newlines` mode.  Lines may be
411   terminated by any of ``'\n'``, the Unix end-of-line convention, ``'\r'``,
412   the old Macintosh convention or ``'\r\n'``, the Windows convention. All of
413   these external representations are seen as ``'\n'`` by the Python program.
414
415   .. note::
416
417      This feature is only available if Python is built with universal newline
418      support (the default).  Also, the newlines attribute of the file objects
419      :attr:`stdout`, :attr:`stdin` and :attr:`stderr` are not updated by the
420      communicate() method.
421
422   If given, *startupinfo* will be a :class:`STARTUPINFO` object, which is
423   passed to the underlying ``CreateProcess`` function.
424   *creationflags*, if given, can be :data:`CREATE_NEW_CONSOLE` or
425   :data:`CREATE_NEW_PROCESS_GROUP`. (Windows only)
426
427
428Exceptions
429^^^^^^^^^^
430
431Exceptions raised in the child process, before the new program has started to
432execute, will be re-raised in the parent.  Additionally, the exception object
433will have one extra attribute called :attr:`child_traceback`, which is a string
434containing traceback information from the child's point of view.
435
436The most common exception raised is :exc:`OSError`.  This occurs, for example,
437when trying to execute a non-existent file.  Applications should prepare for
438:exc:`OSError` exceptions.
439
440A :exc:`ValueError` will be raised if :class:`Popen` is called with invalid
441arguments.
442
443:func:`check_call` and :func:`check_output` will raise
444:exc:`CalledProcessError` if the called process returns a non-zero return
445code.
446
447
448Security
449^^^^^^^^
450
451Unlike some other popen functions, this implementation will never call a
452system shell implicitly.  This means that all characters, including shell
453metacharacters, can safely be passed to child processes. Obviously, if the
454shell is invoked explicitly, then it is the application's responsibility to
455ensure that all whitespace and metacharacters are quoted appropriately.
456
457
458Popen Objects
459-------------
460
461Instances of the :class:`Popen` class have the following methods:
462
463
464.. method:: Popen.poll()
465
466   Check if child process has terminated.  Set and return
467   :attr:`~Popen.returncode` attribute.
468
469
470.. method:: Popen.wait()
471
472   Wait for child process to terminate.  Set and return
473   :attr:`~Popen.returncode` attribute.
474
475   .. warning::
476
477      This will deadlock when using ``stdout=PIPE`` and/or
478      ``stderr=PIPE`` and the child process generates enough output to
479      a pipe such that it blocks waiting for the OS pipe buffer to
480      accept more data.  Use :meth:`communicate` to avoid that.
481
482
483.. method:: Popen.communicate(input=None)
484
485   Interact with process: Send data to stdin.  Read data from stdout and stderr,
486   until end-of-file is reached.  Wait for process to terminate. The optional
487   *input* argument should be a string to be sent to the child process, or
488   ``None``, if no data should be sent to the child.
489
490   :meth:`communicate` returns a tuple ``(stdoutdata, stderrdata)``.
491
492   Note that if you want to send data to the process's stdin, you need to create
493   the Popen object with ``stdin=PIPE``.  Similarly, to get anything other than
494   ``None`` in the result tuple, you need to give ``stdout=PIPE`` and/or
495   ``stderr=PIPE`` too.
496
497   .. note::
498
499      The data read is buffered in memory, so do not use this method if the data
500      size is large or unlimited.
501
502
503.. method:: Popen.send_signal(signal)
504
505   Sends the signal *signal* to the child.
506
507   .. note::
508
509      On Windows, SIGTERM is an alias for :meth:`terminate`. CTRL_C_EVENT and
510      CTRL_BREAK_EVENT can be sent to processes started with a *creationflags*
511      parameter which includes `CREATE_NEW_PROCESS_GROUP`.
512
513   .. versionadded:: 2.6
514
515
516.. method:: Popen.terminate()
517
518   Stop the child. On Posix OSs the method sends SIGTERM to the
519   child. On Windows the Win32 API function :c:func:`TerminateProcess` is called
520   to stop the child.
521
522   .. versionadded:: 2.6
523
524
525.. method:: Popen.kill()
526
527   Kills the child. On Posix OSs the function sends SIGKILL to the child.
528   On Windows :meth:`kill` is an alias for :meth:`terminate`.
529
530   .. versionadded:: 2.6
531
532
533The following attributes are also available:
534
535.. warning::
536
537   Use :meth:`~Popen.communicate` rather than :attr:`.stdin.write <Popen.stdin>`,
538   :attr:`.stdout.read <Popen.stdout>` or :attr:`.stderr.read <Popen.stderr>` to avoid
539   deadlocks due to any of the other OS pipe buffers filling up and blocking the
540   child process.
541
542
543.. attribute:: Popen.stdin
544
545   If the *stdin* argument was :data:`PIPE`, this attribute is a file object
546   that provides input to the child process.  Otherwise, it is ``None``.
547
548
549.. attribute:: Popen.stdout
550
551   If the *stdout* argument was :data:`PIPE`, this attribute is a file object
552   that provides output from the child process.  Otherwise, it is ``None``.
553
554
555.. attribute:: Popen.stderr
556
557   If the *stderr* argument was :data:`PIPE`, this attribute is a file object
558   that provides error output from the child process.  Otherwise, it is
559   ``None``.
560
561
562.. attribute:: Popen.pid
563
564   The process ID of the child process.
565
566   Note that if you set the *shell* argument to ``True``, this is the process ID
567   of the spawned shell.
568
569
570.. attribute:: Popen.returncode
571
572   The child return code, set by :meth:`poll` and :meth:`wait` (and indirectly
573   by :meth:`communicate`).  A ``None`` value indicates that the process
574   hasn't terminated yet.
575
576   A negative value ``-N`` indicates that the child was terminated by signal
577   ``N`` (Unix only).
578
579
580Windows Popen Helpers
581---------------------
582
583The :class:`STARTUPINFO` class and following constants are only available
584on Windows.
585
586.. class:: STARTUPINFO()
587
588   Partial support of the Windows
589   `STARTUPINFO <https://msdn.microsoft.com/en-us/library/ms686331(v=vs.85).aspx>`__
590   structure is used for :class:`Popen` creation.
591
592   .. attribute:: dwFlags
593
594      A bit field that determines whether certain :class:`STARTUPINFO`
595      attributes are used when the process creates a window. ::
596
597         si = subprocess.STARTUPINFO()
598         si.dwFlags = subprocess.STARTF_USESTDHANDLES | subprocess.STARTF_USESHOWWINDOW
599
600   .. attribute:: hStdInput
601
602      If :attr:`dwFlags` specifies :data:`STARTF_USESTDHANDLES`, this attribute
603      is the standard input handle for the process. If
604      :data:`STARTF_USESTDHANDLES` is not specified, the default for standard
605      input is the keyboard buffer.
606
607   .. attribute:: hStdOutput
608
609      If :attr:`dwFlags` specifies :data:`STARTF_USESTDHANDLES`, this attribute
610      is the standard output handle for the process. Otherwise, this attribute
611      is ignored and the default for standard output is the console window's
612      buffer.
613
614   .. attribute:: hStdError
615
616      If :attr:`dwFlags` specifies :data:`STARTF_USESTDHANDLES`, this attribute
617      is the standard error handle for the process. Otherwise, this attribute is
618      ignored and the default for standard error is the console window's buffer.
619
620   .. attribute:: wShowWindow
621
622      If :attr:`dwFlags` specifies :data:`STARTF_USESHOWWINDOW`, this attribute
623      can be any of the values that can be specified in the ``nCmdShow``
624      parameter for the
625      `ShowWindow <https://msdn.microsoft.com/en-us/library/ms633548(v=vs.85).aspx>`__
626      function, except for ``SW_SHOWDEFAULT``. Otherwise, this attribute is
627      ignored.
628
629      :data:`SW_HIDE` is provided for this attribute. It is used when
630      :class:`Popen` is called with ``shell=True``.
631
632
633Constants
634^^^^^^^^^
635
636The :mod:`subprocess` module exposes the following constants.
637
638.. data:: STD_INPUT_HANDLE
639
640   The standard input device. Initially, this is the console input buffer,
641   ``CONIN$``.
642
643.. data:: STD_OUTPUT_HANDLE
644
645   The standard output device. Initially, this is the active console screen
646   buffer, ``CONOUT$``.
647
648.. data:: STD_ERROR_HANDLE
649
650   The standard error device. Initially, this is the active console screen
651   buffer, ``CONOUT$``.
652
653.. data:: SW_HIDE
654
655   Hides the window. Another window will be activated.
656
657.. data:: STARTF_USESTDHANDLES
658
659   Specifies that the :attr:`STARTUPINFO.hStdInput`,
660   :attr:`STARTUPINFO.hStdOutput`, and :attr:`STARTUPINFO.hStdError` attributes
661   contain additional information.
662
663.. data:: STARTF_USESHOWWINDOW
664
665   Specifies that the :attr:`STARTUPINFO.wShowWindow` attribute contains
666   additional information.
667
668.. data:: CREATE_NEW_CONSOLE
669
670   The new process has a new console, instead of inheriting its parent's
671   console (the default).
672
673   This flag is always set when :class:`Popen` is created with ``shell=True``.
674
675.. data:: CREATE_NEW_PROCESS_GROUP
676
677   A :class:`Popen` ``creationflags`` parameter to specify that a new process
678   group will be created. This flag is necessary for using :func:`os.kill`
679   on the subprocess.
680
681   This flag is ignored if :data:`CREATE_NEW_CONSOLE` is specified.
682
683
684.. _subprocess-replacements:
685
686Replacing Older Functions with the :mod:`subprocess` Module
687-----------------------------------------------------------
688
689In this section, "a becomes b" means that b can be used as a replacement for a.
690
691.. note::
692
693   All "a" functions in this section fail (more or less) silently if the
694   executed program cannot be found; the "b" replacements raise :exc:`OSError`
695   instead.
696
697   In addition, the replacements using :func:`check_output` will fail with a
698   :exc:`CalledProcessError` if the requested operation produces a non-zero
699   return code. The output is still available as the
700   :attr:`~CalledProcessError.output` attribute of the raised exception.
701
702In the following examples, we assume that the relevant functions have already
703been imported from the :mod:`subprocess` module.
704
705
706Replacing /bin/sh shell backquote
707^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
708
709.. code-block:: bash
710
711   output=`mycmd myarg`
712
713becomes::
714
715   output = check_output(["mycmd", "myarg"])
716
717Replacing shell pipeline
718^^^^^^^^^^^^^^^^^^^^^^^^
719
720.. code-block:: bash
721
722   output=`dmesg | grep hda`
723
724becomes::
725
726   p1 = Popen(["dmesg"], stdout=PIPE)
727   p2 = Popen(["grep", "hda"], stdin=p1.stdout, stdout=PIPE)
728   p1.stdout.close()  # Allow p1 to receive a SIGPIPE if p2 exits.
729   output = p2.communicate()[0]
730
731The p1.stdout.close() call after starting the p2 is important in order for p1
732to receive a SIGPIPE if p2 exits before p1.
733
734Alternatively, for trusted input, the shell's own pipeline support may still
735be used directly:
736
737.. code-block:: bash
738
739   output=`dmesg | grep hda`
740
741becomes::
742
743   output=check_output("dmesg | grep hda", shell=True)
744
745
746Replacing :func:`os.system`
747^^^^^^^^^^^^^^^^^^^^^^^^^^^
748
749::
750
751   status = os.system("mycmd" + " myarg")
752   # becomes
753   status = subprocess.call("mycmd" + " myarg", shell=True)
754
755Notes:
756
757* Calling the program through the shell is usually not required.
758
759A more realistic example would look like this::
760
761   try:
762       retcode = call("mycmd" + " myarg", shell=True)
763       if retcode < 0:
764           print >>sys.stderr, "Child was terminated by signal", -retcode
765       else:
766           print >>sys.stderr, "Child returned", retcode
767   except OSError as e:
768       print >>sys.stderr, "Execution failed:", e
769
770
771Replacing the :func:`os.spawn <os.spawnl>` family
772^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
773
774P_NOWAIT example::
775
776   pid = os.spawnlp(os.P_NOWAIT, "/bin/mycmd", "mycmd", "myarg")
777   ==>
778   pid = Popen(["/bin/mycmd", "myarg"]).pid
779
780P_WAIT example::
781
782   retcode = os.spawnlp(os.P_WAIT, "/bin/mycmd", "mycmd", "myarg")
783   ==>
784   retcode = call(["/bin/mycmd", "myarg"])
785
786Vector example::
787
788   os.spawnvp(os.P_NOWAIT, path, args)
789   ==>
790   Popen([path] + args[1:])
791
792Environment example::
793
794   os.spawnlpe(os.P_NOWAIT, "/bin/mycmd", "mycmd", "myarg", env)
795   ==>
796   Popen(["/bin/mycmd", "myarg"], env={"PATH": "/usr/bin"})
797
798
799Replacing :func:`os.popen`, :func:`os.popen2`, :func:`os.popen3`
800^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
801
802::
803
804   pipe = os.popen("cmd", 'r', bufsize)
805   ==>
806   pipe = Popen("cmd", shell=True, bufsize=bufsize, stdout=PIPE).stdout
807
808::
809
810   pipe = os.popen("cmd", 'w', bufsize)
811   ==>
812   pipe = Popen("cmd", shell=True, bufsize=bufsize, stdin=PIPE).stdin
813
814::
815
816   (child_stdin, child_stdout) = os.popen2("cmd", mode, bufsize)
817   ==>
818   p = Popen("cmd", shell=True, bufsize=bufsize,
819             stdin=PIPE, stdout=PIPE, close_fds=True)
820   (child_stdin, child_stdout) = (p.stdin, p.stdout)
821
822::
823
824   (child_stdin,
825    child_stdout,
826    child_stderr) = os.popen3("cmd", mode, bufsize)
827   ==>
828   p = Popen("cmd", shell=True, bufsize=bufsize,
829             stdin=PIPE, stdout=PIPE, stderr=PIPE, close_fds=True)
830   (child_stdin,
831    child_stdout,
832    child_stderr) = (p.stdin, p.stdout, p.stderr)
833
834::
835
836   (child_stdin, child_stdout_and_stderr) = os.popen4("cmd", mode,
837                                                      bufsize)
838   ==>
839   p = Popen("cmd", shell=True, bufsize=bufsize,
840             stdin=PIPE, stdout=PIPE, stderr=STDOUT, close_fds=True)
841   (child_stdin, child_stdout_and_stderr) = (p.stdin, p.stdout)
842
843On Unix, os.popen2, os.popen3 and os.popen4 also accept a sequence as
844the command to execute, in which case arguments will be passed
845directly to the program without shell intervention.  This usage can be
846replaced as follows::
847
848   (child_stdin, child_stdout) = os.popen2(["/bin/ls", "-l"], mode,
849                                           bufsize)
850   ==>
851   p = Popen(["/bin/ls", "-l"], bufsize=bufsize, stdin=PIPE, stdout=PIPE)
852   (child_stdin, child_stdout) = (p.stdin, p.stdout)
853
854Return code handling translates as follows::
855
856   pipe = os.popen("cmd", 'w')
857   ...
858   rc = pipe.close()
859   if rc is not None and rc >> 8:
860       print "There were some errors"
861   ==>
862   process = Popen("cmd", shell=True, stdin=PIPE)
863   ...
864   process.stdin.close()
865   if process.wait() != 0:
866       print "There were some errors"
867
868
869Replacing functions from the :mod:`popen2` module
870^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
871
872::
873
874   (child_stdout, child_stdin) = popen2.popen2("somestring", bufsize, mode)
875   ==>
876   p = Popen("somestring", shell=True, bufsize=bufsize,
877             stdin=PIPE, stdout=PIPE, close_fds=True)
878   (child_stdout, child_stdin) = (p.stdout, p.stdin)
879
880On Unix, popen2 also accepts a sequence as the command to execute, in
881which case arguments will be passed directly to the program without
882shell intervention.  This usage can be replaced as follows::
883
884   (child_stdout, child_stdin) = popen2.popen2(["mycmd", "myarg"], bufsize,
885                                               mode)
886   ==>
887   p = Popen(["mycmd", "myarg"], bufsize=bufsize,
888             stdin=PIPE, stdout=PIPE, close_fds=True)
889   (child_stdout, child_stdin) = (p.stdout, p.stdin)
890
891:class:`popen2.Popen3` and :class:`popen2.Popen4` basically work as
892:class:`subprocess.Popen`, except that:
893
894* :class:`Popen` raises an exception if the execution fails.
895
896* the *capturestderr* argument is replaced with the *stderr* argument.
897
898* ``stdin=PIPE`` and ``stdout=PIPE`` must be specified.
899
900* popen2 closes all file descriptors by default, but you have to specify
901  ``close_fds=True`` with :class:`Popen`.
902
903
904Notes
905-----
906
907.. _converting-argument-sequence:
908
909Converting an argument sequence to a string on Windows
910^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
911
912On Windows, an *args* sequence is converted to a string that can be parsed
913using the following rules (which correspond to the rules used by the MS C
914runtime):
915
9161. Arguments are delimited by white space, which is either a
917   space or a tab.
918
9192. A string surrounded by double quotation marks is
920   interpreted as a single argument, regardless of white space
921   contained within.  A quoted string can be embedded in an
922   argument.
923
9243. A double quotation mark preceded by a backslash is
925   interpreted as a literal double quotation mark.
926
9274. Backslashes are interpreted literally, unless they
928   immediately precede a double quotation mark.
929
9305. If backslashes immediately precede a double quotation mark,
931   every pair of backslashes is interpreted as a literal
932   backslash.  If the number of backslashes is odd, the last
933   backslash escapes the next double quotation mark as
934   described in rule 3.
935
936