mirror of
https://github.com/python/cpython.git
synced 2025-11-26 13:22:51 +00:00
Patch #581705: Catch OSError, termios.error in spawn. 2.2 bugfix candidate.
This commit is contained in:
parent
d694c1faf9
commit
6c611fae53
1 changed files with 9 additions and 4 deletions
13
Lib/pty.py
13
Lib/pty.py
|
|
@ -154,9 +154,14 @@ def spawn(argv, master_read=_read, stdin_read=_read):
|
||||||
pid, master_fd = fork()
|
pid, master_fd = fork()
|
||||||
if pid == CHILD:
|
if pid == CHILD:
|
||||||
apply(os.execlp, (argv[0],) + argv)
|
apply(os.execlp, (argv[0],) + argv)
|
||||||
mode = tty.tcgetattr(STDIN_FILENO)
|
try:
|
||||||
tty.setraw(STDIN_FILENO)
|
mode = tty.tcgetattr(STDIN_FILENO)
|
||||||
|
tty.setraw(STDIN_FILENO)
|
||||||
|
restore = 1
|
||||||
|
except tty.error: # This is the same as termios.error
|
||||||
|
restore = 0
|
||||||
try:
|
try:
|
||||||
_copy(master_fd, master_read, stdin_read)
|
_copy(master_fd, master_read, stdin_read)
|
||||||
except IOError:
|
except (IOError, OSError):
|
||||||
tty.tcsetattr(STDIN_FILENO, tty.TCSAFLUSH, mode)
|
if restore:
|
||||||
|
tty.tcsetattr(STDIN_FILENO, tty.TCSAFLUSH, mode)
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue