Your Browser is not longer supported

Please use Google Chrome, Mozilla Firefox or Microsoft Edge to view the page correctly
Loading...

{{viewport.spaceProperty.prod}}

close - Datei schließen

&pagelevel(4)&pagelevel

Definition

#include <unistd.h>

int close(int fildes) ;

Beschreibung

fildes ist ein Dateideskriptor, der von einem Systemaufruf creat(), open(), dup(), fcntl() oder pipe() geliefert wurde. close() schließt die durch fildes angegebene Datei. Alle dem Prozess zugeordneten bestehenden Satzsperren der von fildes angegebenen Datei werden aufgehoben.

Wird die Funktion close() durch ein Signal unterbrochen, das abgefangen werden soll, dann liefert sie -1 und setzt errno auf EINTR; der Zustand von fildes ist danach unbestimmt.

Sind alle Dateideskriptoren, die einer Pipe oder einer FIFO-Gerätedatei zugeordnet waren, geschlossen, werden alle Daten verworfen, die noch in dieser Pipe oder FIFO enthalten waren.

Sind alle Dateideskriptoren, die einer Dateibeschreibung zugeordnet waren, geschlossen, wird die Dateibeschreibung freigegeben.

Ist der Verweiszähler der Datei gleich 0, und sind alle Dateideskriptoren zu dieser Datei geschlossen, wird der von dieser Datei belegte Platz freigegeben. Es kann nicht länger darauf zugegriffen werden.

Erweiterung
Wenn ein Datenstrom geschlossen wird und für den aufrufenden Prozess vorher registriert wurde, dass ihm ein SIGPOLL-Signal (siehe signal() und sigset()) bei Ereignissen in Zusammenhang mit dieser Datei geschickt wird, wird die Registrierung des aufrufenden Prozesses für Ereignisse in Zusammenhang mit dieser Datei aufgehoben. Das letzte close() auf eine Datei bewirkt, dass die zu fildes gehörende Datei beseitigt wird. Wenn O_NDELAY und O_NONBLOCK nicht gesetzt sind und keine Signale für die Datei abgesetzt wurden, wartet close() bis zu 15 Sekunden auf jedes Modul und jeden Treiber, damit in der Warteschlange stehende Ausgaben vor Beseitigen der Datei gemacht werden können. Wenn O_NDELAY oder O_NONBLOCK gesetzt wurde oder wenn Signale vorliegen, wartet close() nicht auf die Beendigung der Ausgabe und löscht die Datei sofort. (Ende)

Returnwert

0

bei Erfolg. Die angegebene Datei ist geschlossen.

 

-1

bei Fehler. errno wird gesetzt, um den Fehler anzuzeigen.

Fehler

close() schlägt fehl, wenn gilt:

 

EBADF

fildes ist kein gültiger Dateideskriptor,
oder die BS2000-Datei ist in diesem Prozess nicht zugreifbar.

 

EINTR

close() wurde durch ein Signal unterbrochen.

Hinweise

Wurde die Datei mit fopen() geöffnet, muss sie statt mit close() mit fclose() geschlossen werden.

Bei Beendigung eines Programms (normal oder mit exit()) werden automatisch alle offenen Dateien geschlossen.

Ob close() für eine BS2000- oder eine POSIX-Datei ausgeführt wird, hängt von der Programmumgebung ab.

Siehe auch

creat(), dup(), fcntl(), lseek(), open(), read(), tell(), write(), unistd.h.