fflush - wypróżnienie buforów strumienia
Standardowa biblioteka C (
libc,
-lc)
#include <stdio.h>
int fflush(FILE *stream);
Użyta na strumieniach wyjściowych funkcja
fflush() wymusza
zapis wszystkich danych buforowanych w przestrzeni użytkownika dla
danego wyjścia lub aktualizację strumienia
stream za
pomocą należącej do niego funkcji zapisu.
W przypadku strumieni wejściowych skojarzonych z plikami, po
których można się przesuwać (na przykład
pliki dyskowe, ale nie potoki czy terminale)
fflush() usuwa wszelkie
dane, które zostały odczytane z pliku, ale jeszcze nie
zostały pobrane przez aplikację.
Stan otwarcia strumienia nie jest zmieniany (tj. pozostaje on nadal otwarty).
Jeśli argument
stream jest równy NULL, to
fflush()
wypróżnia
wszystkie otwarte strumienie wyjściowe.
Informacje o nieblokujących odpowiednikach znajdują się w
unlocked_stdio(3).
Jeśli funkcja zakończyła się pomyślnie,
zwracane jest 0. W przeciwnym przypadku zwracana jest wartość
EOF, a
errno przyjmuje wartość
wskazującą na rodzaj błędu.
- EBADF
-
stream nie jest otwartym strumieniem lub nie jest
otwarty do zapisu.
Funkcja
fflush() może także zawieść i
ustawić wartość
errno na dowolny
błąd wymieniony określony dla
write(2).
Informacje o pojęciach używanych w tym rozdziale można
znaleźć w podręczniku
attributes(7).
Interfejs |
Atrybut |
Wartość |
fflush() |
Bezpieczeństwo wątkowe |
MT-Safe |
C99, POSIX.1-2001, POSIX.1-2008.
POSIX.1-2001 nie określa zachowania podczas opróżniania
strumieni wejściowych; zostało to opisane w standardzie
POSIX.1-2008.
Należy zauważyć, że
fflush()
opróżnia jedynie bufory w przestrzeni użytkownika
obsługiwane przez bibliotekę C. Aby upewnić się,
że dane zostały fizycznie zapisane na dysku, należy
zrzucić również bufory jądra, np. za pomocą
sync(2) lub
fsync(2).
fsync(2),
sync(2),
write(2),
fclose(3),
fileno(3),
fopen(3),
fpurge(3),
setbuf(3),
unlocked_stdio(3)
Autorami polskiego tłumaczenia niniejszej strony podręcznika
są: Adam Byrtek <
[email protected]>, Andrzej Krzysztofowicz
<
[email protected]> i Robert Luberda <
[email protected]>
Niniejsze tłumaczenie jest wolną dokumentacją.
Bliższe informacje o warunkach licencji można uzyskać
zapoznając się z
GNU
General Public License w wersji 3 lub nowszej. Nie przyjmuje się
ŻADNEJ ODPOWIEDZIALNOŚCI.
Błędy w tłumaczeniu strony podręcznika prosimy
zgłaszać na adres listy dyskusyjnej
[email protected]