Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

Commit 522ccef

Browse filesBrowse files
RadicalZephyrvstinner
authored andcommitted
bpo-22865: Expand on documentation for the pty.spawn function (GH-11980)
1 parent 45a24b8 commit 522ccef
Copy full SHA for 522ccef

File tree

Expand file treeCollapse file tree

3 files changed

+27
-4
lines changed
Filter options
Expand file treeCollapse file tree

3 files changed

+27
-4
lines changed

‎Doc/library/pty.rst

Copy file name to clipboardExpand all lines: Doc/library/pty.rst
+25-4Lines changed: 25 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -43,11 +43,32 @@ The :mod:`pty` module defines the following functions:
4343

4444
Spawn a process, and connect its controlling terminal with the current
4545
process's standard io. This is often used to baffle programs which insist on
46-
reading from the controlling terminal.
46+
reading from the controlling terminal. It is expected that the process
47+
spawned behind the pty will eventually terminate, and when it does *spawn*
48+
will return.
49+
50+
The functions *master_read* and *stdin_read* are passed a file descriptor
51+
which they should read from, and they should always return a byte string. In
52+
order to force spawn to return before the child process exits an
53+
:exc:`OSError` should be thrown.
54+
55+
The default implementation for both functions will read and return up to 1024
56+
bytes each time the function is called. The *master_read* callback is passed
57+
the pseudoterminal’s master file descriptor to read output from the child
58+
process, and *stdin_read* is passed file descriptor 0, to read from the
59+
parent process's standard input.
60+
61+
Returning an empty byte string from either callback is interpreted as an
62+
end-of-file (EOF) condition, and that callback will not be called after
63+
that. If *stdin_read* signals EOF the controlling terminal can no longer
64+
communicate with the parent process OR the child process. Unless the child
65+
process will quit without any input, *spawn* will then loop forever. If
66+
*master_read* signals EOF the same behavior results (on linux at least).
67+
68+
If both callbacks signal EOF then *spawn* will probably never return, unless
69+
*select* throws an error on your platform when passed three empty lists. This
70+
is a bug, documented in `issue 26228 <https://bugs.python.org/issue26228>`_.
4771

48-
The functions *master_read* and *stdin_read* should be functions which read from
49-
a file descriptor. The defaults try to read 1024 bytes each time they are
50-
called.
5172

5273
.. versionchanged:: 3.4
5374
:func:`spawn` now returns the status value from :func:`os.waitpid`

‎Misc/ACKS

Copy file name to clipboardExpand all lines: Misc/ACKS
+1Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1859,3 +1859,4 @@ Zheao Li
18591859
Carsten Klein
18601860
Diego Rojas
18611861
Edison Abahurire
1862+
Geoff Shannon
+1Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
Add detail to the documentation on the `pty.spawn` function.

0 commit comments

Comments
0 (0)
Morty Proxy This is a proxified and sanitized view of the page, visit original site.