diff --git a/src/posix/tty.rs b/src/posix/tty.rs index fe7e849..41131fc 100644 --- a/src/posix/tty.rs +++ b/src/posix/tty.rs @@ -441,8 +441,13 @@ impl io::Write for TTYPort { } fn flush(&mut self) -> io::Result<()> { - nix::sys::termios::tcdrain(self.fd) - .map_err(|_| io::Error::new(io::ErrorKind::Other, "flush failed")) + loop { + return match nix::sys::termios::tcdrain(self.fd) { + Ok(_) => Ok(()), + Err(nix::errno::Errno::EINTR) => continue, + Err(_) => Err(io::Error::new(io::ErrorKind::Other, "flush failed")), + }; + } } }