Объем свободного пространства, оставшегося в буфере ввода-вывода, равен размеру буфера за вычетом расстояния между указателем записи и указателем чтения. Если программа пишет данные быстрее, чем может принять устройство вывода, буфер в конечном итоге переполнится, и свободное пространство в нем станет равным нулю.
Поскольку больше нет места для размещения новых данных в буфере, операция вывода не может быть успешно выполнена немедленно. В результате, операция вывода блокируется. Выполнение программы приостановится на заблокированной функции fcrint или syswrite на неопределенный период времени. После того как буфер мы вода будет расчищен и снова появится место для новых данных, операция вывода будет разблокирована и функция print или syswrite выполнит возврат.
Аналогичным образом блокируется операция чтения, когда буфер ввода пуст; это значит, что она блокируется, если объем свободного пространства в буфере равен размеру буфера. В этом случае вызовы функций read или sysread блокируются до тех пор, пока в буфер не будут введены новые данные, предназначенные для чтения.
Блокировка часто является именно тем, что требуется для организации работы программы, но иногда необходимо иметь больший контроль над вводом-выводом. Для управления блокировкой могут применяться несколько методов в одном методе, для преждевременного завершения операции ввода-вывода, если она занимает слишком много времени, используются сигналы. Еще в одном методе, применяется вызов системной функции select с четырьмя параметрами для проверки готовности дескриптора файла к выполнению ввода-вывода перед фактическим выполнением операции чтения или записи.