Provided by:
manpages-pl-dev_20060617-1_all 
NAZWA
close - zamknięcie deskryptora pliku
SKŁADNIA
#include <unistd.h>
int close(int fd);
OPIS
close zamyka deskryptor pliku, tak że nie odnosi się on już później do
żadnego pliku i może być użyty ponownie. Wszelkie blokady utrzymywane
pliku, z którym deskryptor był związany, i których właścicielem był
proces, zostają usunięte (niezależnie od deskryptora plików, którego
użyto dla uzyskanie blokady).
Jeśli fd jest ostatnią kopią deskryptora pewnego pliku, zasoby z nim
związane zostają zwolnione; jeśli deskryptor był ostatnim odniesieniem
do pliku, który usunięto za pomocą polecenia unlink(2), to plik jest
kasowany.
WARTOŚĆ ZWRACANA
close zwraca zero po pomyślnym zakończeniu, a -1 gdy wystąpi błąd.
BŁĘDY
EBADF fd nie jest prawidłowym deskryptorem otwartego pliku.
EINTR Funkcja close() została przerwana przez sygnał.
EIO Wystąpił błąd we/wy.
ZGODNE Z
SVr4, SVID, POSIX, X/OPEN, BSD 4.3. SVr4 dokumentuje dodatowy błąd
ENOLINK.
UWAGI
Niesprawdzanie wartości zwracanej przez close jest popularnym, lecz
poważnym błędem w sztuce programowania. Może się zdarzyć, że przy
kończącym close zostaną najpierw zgłoszone błędy wcześniejszej operacji
write(2). Niesprawdzanie zwracanej podczas zamykania pliku wartości
może prowadzić do niesygnalizowanej utraty danych. Jest to obserwowane
zwłaszcza w przypadku NFS i quota dyskowych.
Pomyślne zamknięcie nie gwarantuje, że dane zostaną pomyślnie zapisane
na dysku, gdyż jądro opóźnia zapisy. Systemy plików nie maja zwyczaju
opróżniania buforów przy zamykaniu strumienia. Jeśli istnieje potrzeba
zapewnienia, aby dane zostały zapisane fizycznie, należy używać
fsync(2). (Zapis zależy w tym momencie od właściwości sprzętowych
dysku.)
ZOBACZ TAKŻE
open(2), fcntl(2), shutdown(2), unlink(2), fclose(3), fsync(2)
2001-12-13 CLOSE(2)