mirror of
https://github.com/python/cpython.git
synced 2025-08-04 08:59:19 +00:00
Merge: #23792: Ignore KeyboardInterrupt when the pydoc pager is active.
This commit is contained in:
commit
f375b0a4d5
2 changed files with 14 additions and 3 deletions
13
Lib/pydoc.py
13
Lib/pydoc.py
|
@ -1450,11 +1450,18 @@ def pipepager(text, cmd):
|
|||
import subprocess
|
||||
proc = subprocess.Popen(cmd, shell=True, stdin=subprocess.PIPE)
|
||||
try:
|
||||
with proc:
|
||||
with io.TextIOWrapper(proc.stdin, errors='backslashreplace') as pipe:
|
||||
pipe.write(text)
|
||||
with io.TextIOWrapper(proc.stdin, errors='backslashreplace') as pipe:
|
||||
pipe.write(text)
|
||||
except OSError:
|
||||
pass # Ignore broken pipes caused by quitting the pager program.
|
||||
while True:
|
||||
try:
|
||||
proc.wait()
|
||||
break
|
||||
except KeyboardInterrupt:
|
||||
# Ignore ctl-c like the pager itself does. Otherwise the pager is
|
||||
# left running and the terminal is in raw mode and unusable.
|
||||
pass
|
||||
|
||||
def tempfilepager(text, cmd):
|
||||
"""Page through text by invoking a program on a temporary file."""
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue