Select, poll and EINTR
I've recently done some fixes in winPR with timers with completion and I've encoutered a case
that you may find interesting.
It's about handling EINTR: when a system call in interrupted by an incoming signal, you'll
get a -1 return code and errno set to EINTR. So usually when you want to be protected against that
behaviour you'll code something like:
#include <sys/select.h> #include <errno.h> void myFunction() { struct fd_set rset; int status, max_fd; ... do { ret = select(max_fd, &rset, NULL, NULL, NULL); } while (ret < 0 && errno == EINTR); }
Ok, so problem treated, you can apply that scheme for any system call and you're done, isn't it ?