Нет.Все, что является обычным файловым дескриптором (например, возвращаемое open(2)
, pipe(2)
, socket(2)
и accept(2)
), не буферизируется - любые данные, которые вы читаете или записываете в него, сразу же вводятся или выводятся через прямые системные вызовы.
Буферизация происходит только тогда, когда у вас есть FILE*
объекты, которые вы можете получить, fopen(3)
используя обычный файл на диске;объекты stdin
, stdout
и stderr
также являются FILE*
объектами, которые устанавливаются при запуске программы.Буферизация обычно включена на FILE*
объектах, но не всегда - ее можно отключить с помощью setbuf(3)
, а по умолчанию stderr
не буферизируется.
Если вы хотите создатьбуферизованный поток из обычного файлового дескриптора, вы можете сделать это с помощью fdopen(3)
.