- 4/2/2020
- 2 perc olvasás
-
- T
- v
- n
- m
- c
-
+5
Folyamot öblít.
Syntax
int fflush( FILE *stream);
Paraméterek
stream
Mutató a FILE struktúrára.
Return Value
fflush 0-t ad vissza, ha a puffer sikeresen kiürült. A 0 értéket kapja vissza abban az esetben is, ha a megadott folyamnak nincs pufferje, vagy csak olvasásra van nyitva. Az EOF visszatérési érték hibát jelez.
Megjegyzés
Ha az fflush EOF-ot ad vissza, előfordulhat, hogy az adatok íráshiba miatt elvesznek. Kritikus hibakezelő beállításakor a legbiztonságosabb, ha a setvbuf függvénnyel kikapcsoljuk a pufferelést, vagy ha a stream I/O függvények helyett olyan alacsony szintű I/O rutinokat használunk, mint a _open, _close és _write.
Megjegyzések
A fflush függvény flushesíti a stream folyamot. Ha a folyamot írási módban nyitották meg, vagy frissítési módban nyitották meg, és az utolsó művelet írás volt, a folyam pufferének tartalma kiíródik a mögöttes fájlba vagy eszközre, és a puffer elvetésre kerül. Ha a folyamot olvasási módban nyitották meg, vagy ha a folyamnak nincs pufferje, az fflush hívásának nincs hatása, és minden puffer megmarad. Az fflush hívása semmissé teszi a folyamra vonatkozó korábbi ungetc hívás hatását. A folyam a hívás után is nyitva marad.
Ha a folyam NULL, a viselkedés ugyanaz, mint az fflush hívása minden nyitott folyamra. Minden írási módban megnyitott folyam és minden olyan frissítési módban megnyitott folyam, ahol az utolsó művelet írás volt, kiürítésre kerül. A hívásnak nincs hatása más streamekre.
A puffereket általában az operációs rendszer tartja karban, amely meghatározza az optimális időpontot az adatok automatikus lemezre írására: amikor a puffer megtelt, amikor a streamet lezárják, vagy amikor a program normálisan befejeződik anélkül, hogy a streamet lezárná. A futásidejű könyvtár commit-to-disk funkciója lehetővé teszi, hogy a kritikus adatok közvetlenül a lemezre íródjanak, ne pedig az operációs rendszer pufferébe. Egy meglévő program átírása nélkül engedélyezheti ezt a funkciót a program objektumfájljainak a COMMODE.OBJ hivatkozással történő összekapcsolásával. Az így létrejövő futtatható fájlban a _flushall hívások az összes puffer tartalmát a lemezre írják. A COMMODE.OBJ csak az _flushall és az fflush funkciót érinti.
A lemezre való átvitel funkció vezérléséről lásd: Stream I/O, fopen és _fdopen.
Ez a függvény zárolja a hívó szálat, ezért szálbiztos. A nem reteszelős változatért lásd _fflush_nolock.
Egy alapértelmezés szerint ennek a függvénynek a globális állapota az alkalmazáshoz van rendelve. Ennek megváltoztatásához lásd: Globális állapot a CRT-ben.
Követelmények
Funkció | Szükséges fejléc |
---|---|
fflush | <stdio.h> |
A kompatibilitással kapcsolatos további információkért lásd: Kompatibilitás.
Példa
// crt_fflush.c// Compile with: cl /W4 crt_fflush.c// This sample gets a number from the user, then writes it to a file.// It ensures the write isn't lost on crash by calling fflush.#include <stdio.h>int * crash_the_program = 0;int main(void){ FILE * my_file; errno_t err = fopen_s(&my_file, "myfile.txt", "w"); if (my_file && !err) { printf("Write a number: "); int my_number = 0; scanf_s("%d", &my_number); fprintf(my_file, "User selected %d\n", my_number); // Write data to a file immediately instead of buffering. fflush(my_file); if (my_number == 5) { // Without using fflush, no data was written to the file // prior to the crash, so the data is lost. *crash_the_program = 5; } // Normally, fflush is not needed as closing the file will write the buffer. // Note that files are automatically closed and flushed during normal termination. fclose(my_file); } return 0;}
.