Поскольку это низкоуровневые вызовы операционной системы, в которых реализованы методы более высокого уровня (буферизованные), такие как fread
, fwrite
, fflush
и т. Д.
Скорость ОС важна, не так ли?
Да, это так. Но предполагается, что приложение будет эффективно выполнять write()
вызовов. Если требуется буферизация, следует использовать fwrite
.
Так что, если read
не буферизуется и буферизация более эффективна, почему бы им не скрыть это?
Поскольку буферизация не всегда более эффективна. Фактически, для некоторых сценариев использования буферный поток выполняет больше операций копирования, чем непосредственно write
. Для массовых операций ввода-вывода эта дополнительная копия приводит к замедлению ввода-вывода.