«Классический» файловый ввод / вывод Linux использует «блокирующие вызовы» , в отличие от «Асинхронный ввод / вывод» , распространенный в Javascript. Это означает, что если вы хотите что-то «прочитать» или «записать» ... программа «блокируется» до завершения операции ввода-вывода.
Это прекрасно работает, если вы просто хотите «прочитать» одну вещь. Это НЕ работает, если вы хотите прочитать любую из НЕСКОЛЬКИХ разных вещей. Например, если у вас был цикл «событие», ожидающий какого-либо события мыши, клавиатуры или окна.
Я полагаю, что в вашем учебнике говорится о функции select () , которая позволяет блокировать функцию до тех пор, пока один или несколько входов не получат данные.
Это на самом деле не о том, "у этого файла на диске один байт или двадцать?" Скорее, использование «select» позволяет «мультиплексировать» несколько одновременных входов.
Вы также можете найти эту статью полезной:
Linux - мультиплексирование ввода-вывода - выбор против опроса против эполла