Из справочных страниц
O_NONBLOCK or O_NDELAY
This flag has no effect for regular files and block
devices; that is, I/O operations will (briefly) block when
device activity is required, regardless of whether O_NONBLOCK
is set. Since O_NONBLOCK semantics might eventually be
implemented, applications should not depend upon blocking
behavior when specifying this flag for regular files and block
devices.
С мой вопрос У меня было следующее понимание системы io.
Device <-----> Kernel Buffers <-----> Process
Таким образом, всякий раз, когда буферы заполнены (запись) или пусты (чтение), соответствующая команда из процесса может блокироваться или нет в зависимости от установленного выше флага. Ядро, взаимодействующее с устройством, не блокирует процесс. Ядро может использовать или не использовать DMA для связи с устройством.
Но похоже, что мое понимание неверно, так как я не понимаю, почему обычные файловые дескрипторы не могут быть неблокирующими. Может ли кто-нибудь помочь мне здесь?