Если реализация библиотека может определить выходной поток не сослаться на интерактивном устройстве (и только тогда), поток будет полностью буферизацией, т.е. будут сброшены, когда буфер (по умолчанию BUFSIZ
размера) полный.
Если не полностью буферном, поток может быть линией буферизации, то есть она будет очищена, когда '\n'
написано (или буфер заполнен, если линия действительно долго), или небуферизована.
(ISO/IEC 9899: 1999, глава 7.19.5.3 "fopen()
функция", пункт 7. Не более новая версия стандарта под рукой, но AFAIK это не изменило.)
Что представляет собой «интерактивное устройство», определяется реализацией. (Глава 5.1.2.3 «Выполнение программы», п. 6.)
Общая идея заключается в том, что выход файла должен быть полностью буферизирован, тогда как вывод терминала должен быть буферизирован в строке (или небуферизован, как правильно указал Jesse Good).
Как политика буферизации, так и размер буфера могут быть изменены с помощью setvbuf()
. Обратите внимание, что любое такое изменение должно произойти до, вы начинаете получать доступ к потоку, что несколько очевидно после того, как вы подумаете об этом.
Довольно точно, что это зависит от ОС. – Phonon
Кстати, в коде используется wxTextOutputStream, который использует wxFFileOutoutStream, который использует wxFFile. Но это только инкапсулирует структуру FILE, поэтому я думаю, что механизм fflush - это интересная вещь ... – anhoppe
Если она буферизована, то она очищается после того, как буфер заполнен. И я не совсем понимаю, что вы подразумеваете под структурой FILE (fopen , fwrite, ....) –