The EINTR error can be raised at any time for any reason, so essentially every I/O operation on a Unix system must be prepared to handle this error properly. Surprisingly to some, this includes the C standard library functions such as fread(), fwrite(), and so on.
I think the editors of C99 and POSIX would be surprised by this too. Any non-buggy fread or fwrite should retry on EINTR.