Provided by: manpages-de-dev_1.11-1_all bug

BEZEICHNUNG

       close - Dateideskriptor schließen

ÜBERSICHT

       #include <unistd.h>

       int close(int fd);

BESCHREIBUNG

       close()  schließt  einen  Dateideskriptor, so dass dieser nicht mehr zu einer Datei gehört
       und wieder verwendet werden kann. Alle zum  Prozess  gehörenden  Datensatz-Sperren  (siehe
       fcntl(2))  der  mit  dem Deskriptor verbundenen Datei werden aufgehoben. Die Aufhebung der
       Sperren erfolgt unabhängig von dem Deskriptor, mit dem die Sperre eingerichtet wurde.

       Wenn fd der letzte Deskriptor der zugehörigen offenen Datei ist  (siehe  open(2)),  werden
       die  zugehörigen  Ressourcen  freigegeben.  War der Deskriptor der letzte Verweis auf eine
       Datei, die mittels unlink(2) entfernt wurde, wird die Datei gelöscht.

RÜCKGABEWERT

       Nach erfolgreicher Ausführung gibt close() 0 zurück. Bei Fehlern wird -1 zurückgegeben und
       errno entsprechend gesetzt.

FEHLER

       EBADF  fd ist kein gültiger Deskriptor für eine geöffnete Datei.

       EINTR  Der Aufruf von close() wurde von einem Signal unterbrochen (siehe signal(7)).

       EIO    Es ist ein E/A-Fehler (engl. I/O) aufgetreten.

KONFORM ZU

       POSIX.1-2001, POSIX.1-2008, SVr4, 4.3BSD.

ANMERKUNGEN

       Es  ist ein verbreiteter, ernster Programmierfehler, den Rückgabewert von close() nicht zu
       prüfen. Es ist durchaus möglich, dass Fehler bei einer  früheren  write(2)-Operation  erst
       bei  dem  abschließenden  close()-Zugriff  gemeldet  werden.  Wird  der  Rückgabewert beim
       Schließen einer Datei nicht geprüft, kann dies zu unbemerktem  Datenverlust  führen.  Dies
       kann  vor allem mit NFS und »Disk Quotas« beobachtet werden. Speziell sollte close() nicht
       nach  einem  EINTR  erneut  versucht  werden,  da  dies  dazu  führen   kann,   dass   ein
       wiederverwendeter Deskriptor von einem anderen Prozess geschlossen wird.

       Ein  erfolgreiches »close« garantiert nicht, dass die Daten erfolgreich auf der Festplatte
       gespeichert wurden, weil der Kernel verzögert schreibt. Es  ist  bei  Dateisystemen  nicht
       üblich, beim Schließen des Streams die Puffer zu leeren. Wenn Sie sicher sein müssen, dass
       die Daten physisch gespeichert sind, verwenden Sie fsync(2). (Hierbei  kommt  es  auf  die
       Hardware Ihrer Festplatte an.)

       Wahrscheinlich  ist  es  unklug,  Dateideskriptoren  zu schließen, die möglicherweise noch
       durch Systemaufrufe  in  anderen  Threads  desselben  Prozesses  belegt  sein  können.  Da
       Dateideskriptoren  wiederverwendet  werden  können,  kann  dies  zu undurchsichtigen »Race
       Conditions« mit unbeabsichtigten Nebenwirkungen führen.

SIEHE AUCH

       fcntl(2), fsync(2), open(2), shutdown(2), unlink(2), fclose(3)

KOLOPHON

       Diese Seite  ist  Teil  der  Veröffentlichung  4.04  des  Projekts  Linux-man-pages.  Eine
       Beschreibung  des  Projekts,  Informationen,  wie  Fehler gemeldet werden können sowie die
       aktuelle Version dieser Seite finden sich unter http://www.kernel.org/doc/man-pages/.

ÜBERSETZUNG

       Die deutsche Übersetzung dieser Handbuchseite wurde von Ralf Demmer  <rdemmer@rdemmer.de>,
       Martin     Eberhard    Schauer    <Martin.E.Schauer@gmx.de>    und    Mario    Blättermann
       <mario.blaettermann@gmail.com> erstellt.

       Diese Übersetzung ist Freie Dokumentation;  lesen  Sie  die  GNU  General  Public  License
       Version   3  oder  neuer  bezüglich  der  Copyright-Bedingungen.  Es  wird  KEINE  HAFTUNG
       übernommen.

       Wenn Sie Fehler in der Übersetzung dieser Handbuchseite finden, schicken Sie bitte eine E-
       Mail an <debian-l10n-german@lists.debian.org>.