ERRORS
The pread(), read(), and readv() calls will succeed unless:
[EAGAIN] The file was marked for non-blocking I/O, and no data were ready to be read.
[EBADF] fildes is not a valid file or socket descriptor open for reading.
[EFAULT] Buf points outside the allocated address space.
[EINTR] A read from a slow device was interrupted before any data arrived by the delivery of a signal.
[EINVAL] The pointer associated with fildes was negative.