_flushall

Сбрасывает все потоки; очищает все буферы.

Синтаксис

int _flushall( void );

Возвращаемое значение

_flushall возвращает число открытых потоков (ввода и вывода). Не возвращается ошибка.

Замечания

По умолчанию функция _flushall записывает в соответствующие файлы содержимое всех буферов, связанных с открытыми потоками вывода. Все буферы, связанные с открытыми входными потоками, очищаются. (Эти буферы обычно обслуживаются операционной системой, которая автоматически определяет оптимальное время записи данных на диск: при заполнении буфера, при закрытии потока или при нормальном завершении программы без закрытия потоков).

Если после вызова функции _flushall выполняется операция чтения, из входных файлов в буферы считываются новые данные. После вызова функции _flushall все потоки остаются открытыми.

Предусмотренная в библиотеке времени выполнения функция фиксации на диск позволяет обеспечить запись критически важных данных непосредственно на диск, а не в буферы операционной системы. Без перезаписи существующей программы эту функцию можно включить, связав файлы объектов программы с Commode.obj. В результирующем исполняемом файле вызовы для _flushall записи содержимого всех буферов на диск. Файл Commode.obj влияет только на функции _flushall и fflush.

Сведения об управлении функцией фиксации на диск см. в разделе "Потоковые операции ввода-вывода" fopenи _fdopen.

По умолчанию глобальное состояние этой функции ограничивается приложением. Чтобы изменить это поведение, см . статью "Глобальное состояние" в CRT.

Требования

Function Обязательный заголовок
_flushall <stdio.h>

Дополнительные сведения о совместимости см. в разделе Совместимость.

Пример

// crt_flushall.c
// This program uses _flushall
// to flush all open buffers.

#include <stdio.h>

int main( void )
{
   int numflushed;

   numflushed = _flushall();
   printf( "There were %d streams flushed\n", numflushed );
}
There were 3 streams flushed

См. также

Потоковый ввод-вывод
_commit
fclose, _fcloseall
fflush
setvbuf