diff --git a/select_linux.go b/select_linux.go index da2b185..948cde0 100644 --- a/select_linux.go +++ b/select_linux.go @@ -5,7 +5,15 @@ import ( ) func doSelect(nfd int, r *syscall.FdSet, w *syscall.FdSet, e *syscall.FdSet, timeout *syscall.Timeval) (changed bool, err error) { - n, err := syscall.Select(nfd, r, w, e, timeout) + var n int + + for { + n, err = syscall.Select(nfd, r, w, e, timeout) + if err == nil || err != syscall.EINTR { + break + } + } + if err != nil { return false, err }