Следовательно, будет целесообразно проверять еще одно значение errno — EAGAIN. Как было сказано выше, если определенный дескриптор файла был открыт в неблокирующем режиме (вызову open()сообщен флаг O_NONBLOCK) и данных для считывания не оказалось, то вызов read() возвратит –1 и вместо блокирования установит значение errno в EAGAIN. При выполнении неблокирующего считывания нужно выполнять проверку на наличие EAGAIN, иначе вы рискуете перепутать серьезную ошибку с тривиальным отсутствием данных. Например, вы можете использовать примерно следующий код:
Linux. Системное программирование
·
Роберт Лав