summaryrefslogtreecommitdiffstats
path: root/Doc/library/subprocess.rst
diff options
context:
space:
mode:
authorEli Bendersky <eliben@gmail.com>2011-04-15 04:29:31 (GMT)
committerEli Bendersky <eliben@gmail.com>2011-04-15 04:29:31 (GMT)
commitfd9103a5da6ab53b6889707da4307d75c798b27b (patch)
tree0e8a5bfc155400536294e95eaffec83c80a19ffc /Doc/library/subprocess.rst
parent99e97f92c6b4993275fc84b76018374281467e91 (diff)
parentd211231cd51924954c1811ebf271c4499b1323b1 (diff)
downloadcpython-fd9103a5da6ab53b6889707da4307d75c798b27b.zip
cpython-fd9103a5da6ab53b6889707da4307d75c798b27b.tar.gz
cpython-fd9103a5da6ab53b6889707da4307d75c798b27b.tar.bz2
merge from 3.2
Diffstat (limited to 'Doc/library/subprocess.rst')
-rw-r--r--Doc/library/subprocess.rst44
1 files changed, 38 insertions, 6 deletions
diff --git a/Doc/library/subprocess.rst b/Doc/library/subprocess.rst
index 88eb784..3faf60f 100644
--- a/Doc/library/subprocess.rst
+++ b/Doc/library/subprocess.rst
@@ -94,12 +94,10 @@ This module defines one class called :class:`Popen`:
*shell=False* does not suffer from this vulnerability; the above Note may be
helpful in getting code using *shell=False* to work.
- On Windows: the :class:`Popen` class uses CreateProcess() to execute the child
- program, which operates on strings. If *args* is a sequence, it will be
- converted to a string using the :meth:`list2cmdline` method. Please note that
- not all MS Windows applications interpret the command line the same way:
- :meth:`list2cmdline` is designed for applications using the same rules as the MS
- C runtime.
+ On Windows: the :class:`Popen` class uses CreateProcess() to execute the
+ child program, which operates on strings. If *args* is a sequence, it will
+ be converted to a string in a manner described in
+ :ref:`converting-argument-sequence`.
*bufsize*, if given, has the same meaning as the corresponding argument to the
built-in open() function: :const:`0` means unbuffered, :const:`1` means line
@@ -733,3 +731,37 @@ Replacing functions from the :mod:`popen2` module
* popen2 closes all file descriptors by default, but you have to specify
``close_fds=True`` with :class:`Popen` to guarantee this behavior on
all platforms or past Python versions.
+
+Notes
+-----
+
+.. _converting-argument-sequence:
+
+Converting an argument sequence to a string on Windows
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+On Windows, an *args* sequence is converted to a string that can be parsed
+using the following rules (which correspond to the rules used by the MS C
+runtime):
+
+1. Arguments are delimited by white space, which is either a
+ space or a tab.
+
+2. A string surrounded by double quotation marks is
+ interpreted as a single argument, regardless of white space
+ contained within. A quoted string can be embedded in an
+ argument.
+
+3. A double quotation mark preceded by a backslash is
+ interpreted as a literal double quotation mark.
+
+4. Backslashes are interpreted literally, unless they
+ immediately precede a double quotation mark.
+
+5. If backslashes immediately precede a double quotation mark,
+ every pair of backslashes is interpreted as a literal
+ backslash. If the number of backslashes is odd, the last
+ backslash escapes the next double quotation mark as
+ described in rule 3.
+
+