def _copy(self):
"""Main select loop. Passes all data to self.master_read() or self.stdin_read().
"""
assert self.master_fd is not None
master_fd = self.master_fd
bufsize = self.bufsize
while True:
try:
rfds, wfds, xfds = select.select([master_fd, pty.STDIN_FILENO], [], [])
except OSError as e:
if e.errno == 4: # Interrupted system call.
continue # This happens at terminal resize.
if master_fd in rfds:
data = os.read(master_fd, bufsize)
self.write_stdout(data)
if pty.STDIN_FILENO in rfds:
data = os.read(pty.STDIN_FILENO, bufsize)
self.write_stdin(data)
评论列表
文章目录