mirror of
https://github.com/python/cpython.git
synced 2024-11-24 18:34:43 +08:00
Patch #581705: Catch OSError, termios.error in spawn. 2.2 bugfix candidate.
This commit is contained in:
parent
d694c1faf9
commit
6c611fae53
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()
|
||||
if pid == CHILD:
|
||||
apply(os.execlp, (argv[0],) + argv)
|
||||
mode = tty.tcgetattr(STDIN_FILENO)
|
||||
tty.setraw(STDIN_FILENO)
|
||||
try:
|
||||
mode = tty.tcgetattr(STDIN_FILENO)
|
||||
tty.setraw(STDIN_FILENO)
|
||||
restore = 1
|
||||
except tty.error: # This is the same as termios.error
|
||||
restore = 0
|
||||
try:
|
||||
_copy(master_fd, master_read, stdin_read)
|
||||
except IOError:
|
||||
tty.tcsetattr(STDIN_FILENO, tty.TCSAFLUSH, mode)
|
||||
except (IOError, OSError):
|
||||
if restore:
|
||||
tty.tcsetattr(STDIN_FILENO, tty.TCSAFLUSH, mode)
|
||||
|
Loading…
Reference in New Issue
Block a user