unlink(2) unlink(2)
NAME
unlink - Verzeichniseintrag entfernen
SYNTAX
#include <unistd.h>
int unlink(const char *path);
BESCHREIBUNG
unlink() entfernt einen Link auf eine Datei. Wenn path einen symboli-
schen Link angibt, entfernt unlink() diesen symbolischen Link und
wirkt sich nicht auf eine Datei oder ein Verzeichnis aus, das vom Kon-
text des symbolischen Links angegeben ist. Andernfalls entfernt
unlink() den durch den Pfadnamen, auf den path zeigt, angegebenen Link
und setzt den Link-Zähler der Datei, auf die der Link verweist, um
eins zurück.
Wenn der Link-Zähler der Datei 0 erreicht und die Datei von keinem
Prozeß geöffnet ist, wird der von der Datei belegte Speicherplatz
freigegeben und auf die Datei kann nicht mehr zugegriffen werden. Wenn
die Datei von einem oder mehreren Prozessen geöffnet ist und der
letzte Link entfernt wird, wird der Link entfernt, bevor unlink()
zurückkehrt, der Inhalt der Datei wird jedoch erst gelöscht, wenn alle
Verweise auf diese Datei geschlossen sind.
Das Argument path darf kein Verzeichnis angeben, es sei denn, der Pro-
zeß verfügt über die entsprechenden Berechtigungen, und die Implemen-
tierung unterstützt die Verwendung von unlink() für Verzeichnisse.
Nach erfolgreicher Ausführung markiert unlink() die Felder stctime
und stmtime des Elternverzeichnisses zur Aktualisierung. Außerdem
wird das Feld stctime der Datei zur Aktualisierung gekennzeichnet,
wenn der Link-Zähler der Datei nicht 0 ist.
FEHLER
Die folgenden Beschreibungen der Fehlercodes sind funktionsspezifisch.
Eine allgemeingültige Beschreibung finden Sie in introprm2(2) bzw. in
errno(5).
Der Link auf die angegebene Datei wird entfernt, außer wenn einer oder
mehrere der nachstehenden Punkte zutreffen:
EACCES Eine Komponente von path darf nicht durchsucht werden.
EACCES Die Schreiberlaubnis wird für das Verzeichnis verwei-
gert, das den zu entfernenden Link enthält.
EACCES Das übergeordnete Verzeichnis hat das Sticky-Bit
gesetzt, und der Benutzer darf nicht auf die Datei
schreiben; der Benutzer besitzt weder das übergeordnete
Verzeichnis noch die Datei.
Seite 1 Reliant UNIX 5.44 Gedruckt 11/98
unlink(2) unlink(2)
EBUSY Der Link auf die durch das Argument path angegebene
Datei kann nicht entfernt werden, da die Datei vom
System oder einem anderen Prozeß verwendet wird und die
Implementierung dies als einen Fehler ansieht; oder oder
bei der durch path angegebenen Datei handelt es sich um
einen benannten Stream.
EFAULT path weist über den zugewiesenen Adreßraum des Prozesses
hinaus.
EINTR Ein Signal wurde während des unlink()-Systemaufrufs auf-
gefangen.
ELOOP Bei der Übersetzung von path wurden zu viele symbolische
Links gefunden.
EMULTIHOP Komponenten von path erfordern den Sprung auf ferne
Rechner, und das Dateisystem erlaubt dies nicht.
ENAMETOOLONG Die Länge von path überschreitet PATHMAX, oder die
Länge einer Komponente von path überschreitet NAMEMAX.
ENOENT Die genannte Datei ist nicht vorhanden oder ist ein
Null-Pfadname. Der Benutzer ist kein Systemverwalter.
ENOTDIR Eine Komponente von path ist kein Verzeichnis.
EPERM Bei der durch path angegebenen Datei handelt es sich um
ein Verzeichnis, und entweder der aufrufende Prozeß ver-
fügt nicht über die entsprechenden Berechtigungen oder
die Implementierung läßt die Verwendung von unlink() für
Verzeichnisse nicht zu.
EPERM oder EACCES
Das Flag SISVTX ist auf das Verzeichnis mit der Datei
gesetzt, auf die durch das Argument path verwiesen wird,
und der aufrufende Prozeß ist weder der Eigentümer der
Datei noch der Eigentümer des Verzeichnisses, noch ver-
fügt er über die erforderlichen Berechtigungen.
EROFS Der zu entfernende Verzeichniseintrag ist Teil eines
schreibgeschützten Dateisystems.
ENOLINK path weist auf einen fernen Rechner, und die Verbindung
zu diesem Rechner ist nicht mehr aktiv.
Die Funktion unlink() kann bei folgenden Bedingungen fehlschlagen,
wobei der Link auf die Datei nicht entfernt wird:
ENAMETOOLONG Die Auflösung des Pfadnamens eines symbolischen Links
hat ein Zwischenergebnis erzeugt, dessen Länge PATHMAX
überschreitet.
Seite 2 Reliant UNIX 5.44 Gedruckt 11/98
unlink(2) unlink(2)
ETXTBSY Die Datei ist der letzte Link für eine reine Programmda-
tei, die gerade ausgeführt wird.
ANWENDUNGSZWECK
Anwendungen sollten zum Entfernen eines Verzeichnisses die Funktion
rmdir() verwenden.
ERGEBNIS
Nach erfolgreicher Beendigung wird 0 zurückgegeben. Andernfalls wird
-1 zurückgegeben, und errno wird zur Anzeige des Fehlers gesetzt.
SIEHE AUCH
rm(1), close(2), link(2), open(2), rmdir(2), remove(3C), unistd(4).
Seite 3 Reliant UNIX 5.44 Gedruckt 11/98