CLOSE(2)

BEZEICHNUNG
close - Datei-Deskriptor schließen

ÜBERSICHT
#include <unistd.h>

intclose(intfd);

BESCHREIBUNG
close schließt einen Datei-Deskriptor, so dass dieser nicht mehr zu einer Datei gehört und wieder verwendet werden kann. Alle Sperren, mit denen die Datei belegt ist und die zu diesem Prozess gehören, werden aufgehoben (unabhängig von dem Datei-Deskriptor, mit dem die Sperre eingerichtet wurde).

Wenn fd die letzte Kopie eines bestimmten Datei-Deskriptors ist, werden die zugehörigen Ressourcen freigegeben. War der Datei-Deskriptor der letzte Verweis auf eine Datei, die mit unlink entfernt wurde, dann wird die Datei gelöscht.

RÜCKGABEWERT
close gibt im Erfolgsfall 0 zurück und bei Auftreten eines Fehlers -1.

FEHLER

EBADF
    fd ist kein gültiger geöffneter Datei-Deskriptor.

KONFORM ZU
SVr4, SVID, POSIX, X/OPEN, BSD 4.3. SVr4 dokumentiert eine zusätzliche ENOLINK Fehlerbedingung.

ANMERKUNGEN
Es ist ein verbreiteter aber ernster Programmierfehler, den Rückgabewert von close nicht zu prüfen. Im Verbund mit Dateisystemen, die Techniken wie ``write-behind'' zur Verbesserung der Performance einsetzen, kann dies einen erfolgreichen write(2) -Vorgang vortäuschen, obwohl die Daten noch nicht geschrieben wurden. Der Fehlerstatus könnte zwar bei einem späteren Schreibvorgang festgestellt werden, muss aber bei Schließen der Datei ausgewertet werden. Wird der Rückgabewert beim Schließen einer Datei nicht geprüft, kann dies zu unbemerktem Datenverlust führen. Dies ist insbesondere bei NFS mit Disk-Quotas zu beobachten.

SIEHE AUCH
open(2), fcntl(2), shutdown(2), unlink(2), fclose(3).