Provided by: manpages-pl-dev_20051117-1_all bug

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)