Set VMIN to 1 as without it poll() returns immediately even when no data is available to read on macOS

This commit is contained in:
Kovid Goyal 2018-06-09 11:17:12 +05:30
parent 65ed9c759c
commit c094ebce07
No known key found for this signature in database
GPG Key ID: 06BC317B515ACE7C
2 changed files with 5 additions and 2 deletions

View File

@ -275,7 +275,10 @@ def _write_ready(self, handler, fd):
handler.write_buf[self.iov_limit - 1] = b''.join(handler.write_buf[self.iov_limit - 1:])
del handler.write_buf[self.iov_limit:]
sizes = tuple(map(len, handler.write_buf))
written = os.writev(fd, handler.write_buf)
try:
written = os.writev(fd, handler.write_buf)
except BlockingIOError:
return
if not written:
raise EOFError('The output stream is closed')
if written >= sum(sizes):

View File

@ -108,7 +108,7 @@ static inline bool
put_tty_in_raw_mode(int fd, const struct termios* termios_p) {
struct termios raw_termios = *termios_p;
cfmakeraw(&raw_termios);
raw_termios.c_cc[VMIN] = 0; raw_termios.c_cc[VTIME] = 0;
raw_termios.c_cc[VMIN] = 1; raw_termios.c_cc[VTIME] = 0;
if (tcsetattr(fd, TCSAFLUSH, &raw_termios) != 0) { PyErr_SetFromErrno(PyExc_OSError); return false; }
return true;
}