POSIX допускает неблокирующее чтение с нулевым символом, которое «может обнаруживать и возвращать ошибки», включая то, что чтение блокирует:
open (2 )
устройство в режиме O_NONBLOCK
ing; чтение (2)
со счетом 0. Если эта чтение, операция
проверяет наличие ошибок в в таких случаях, если чтение будет блокироваться, то чтение
вернет -1 и установит errno
на EAGAIN
(или, возможно, EWOULDBLOCK
для сокетов, но вы спрашиваете о символьных устройствах).