symlink(2) symlink(2)
NAME
symlink - Symbolischen Link auf eine Datei erstellen
SYNTAX
#include <unistd.h>
int symlink(const char *name1, const char *name2);
BESCHREIBUNG
symlink() erzeugt den symbolischen Link name2 auf die Datei name1.
Beide Namen dürfen beliebige Pfadnamen sein, die beiden Dateien müssen
sich nicht auf demselben Dateisystem befinden, und name1 muß nicht
vorhanden sein.
Die Datei, auf die der symbolische Link zeigt, wird verwendet, wenn
mit dem Link eine open(2)-Operation durchgeführt wird. Ein stat(2) auf
einen symbolischen Link liefert die verwiesene Datei, während ein
lstat(2) Informationen über den Link selbst liefert. Dies kann zu
unerwarteten Ergebnissen führen, wenn ein symbolischer Link auf ein
Verzeichnis erzeugt wird. Um in Programmen diese ungewünschten Effekte
zu reduzieren, kann der Aufruf readlink(2) verwendet werden, um den
Inhalt eines symbolischen Links zu lesen.
FEHLER
Die folgenden Beschreibungen der Fehlercodes sind funktionsspezifisch.
Eine allgemeingültige Beschreibung finden Sie in introprm2(2) bzw. in
errno(5).
Der symbolische Link wird nicht hergestellt, wenn wenigstens eine der
folgenden Bedingungen erfüllt ist:
EACCES In dem Verzeichnis, in dem der symbolische Link erstellt
wird, wird die Schreiberlaubnis verweigert, oder eine
Komponente des Pfadpräfixes von name2 darf nicht durch-
sucht werden.
EDQUOT Das Verzeichnis, in dem sich der Eintrag für den neuen
symbolischen Link befinden soll, kann nicht erweitert
werden, da die maximale Anzahl der Plattenblöcke des
Benutzers für das Dateisystem überschritten wurde.
EDQUOT Der neue symbolische Link kann nicht erzeugt werden, da
die maximale Anzahl der Plattenblöcke des Benutzers für
das Dateisystem, welches den Link enthalten soll, über-
schritten wurde.
EDQUOT Die maximale Anzahl von I-Nodes des Benutzers auf dem
Dateisystem, auf dem die Datei erzeugt werden soll,
wurde überschritten.
EEXIST Die Datei, die durch name2 angegeben wurde, existiert
bereits.
Seite 1 Reliant UNIX 5.44 Gedruckt 11/98
symlink(2) symlink(2)
EFAULT name1 oder name2 weisen über den zugewiesenen Adreßraum
des Prozesses hinaus.
EIO Beim Lesen vom Dateisystem oder Schreiben auf dieses
trat ein Ein-/Ausgabefehler auf.
ELOOP Zu viele symbolische Links wurden beim Auflösen von
name2 gefunden.
ENAMETOOLONG Die Länge von name1 oder name2 überschreitet PATHMAX,
oder die Länge einer Komponente von name1 oder name2
überschreitet NAMEMAX.
ENOENT Eine Komponente des Pfadnamenpräfixes von name2 exi-
stiert nicht.
ENOSPC Das Verzeichnis, in dem der Eintrag für den neuen symbo-
lischen Link erzeugt werden soll, kann nicht erweitert
werden, da auf dem Dateisystem des Verzeichnisses kein
Speicherplatz mehr frei ist.
ENOSPC Der neue symbolische Link kann nicht erzeugt werden, da
kein Speicherplatz mehr auf dem Dateisystem verfügbar
ist, welches den Link enthalten soll.
ENOSPC Es gibt keine freien I-Nodes auf dem Dateisystem, auf
dem die Datei erzeugt werden soll.
ENOSYS Das Dateisystem unterstützt keine symbolischen Links.
ENOTDIR Eine Komponente des Pfadpräfixes von name2 ist kein Ver-
zeichnis.
EROFS Die Datei name2 würde sich auf einem schreibgeschützten
Dateisystem befinden.
Die Funktion symlink() kann bei folgender Bedingung fehlschlagen:
ENAMETOOLONG Die Auflösung des Pfadnamens eines symbolischen Links
hat ein Zwischenergebnis erzeugt, dessen Länge PATHMAX
überschreitet.
ERGEBNIS
Nach erfolgreicher Ausführung liefert symlink() den Wert 0 zurück;
ansonsten wird -1 zurückgegeben und der Fehlercode in errno geschrie-
ben.
Seite 2 Reliant UNIX 5.44 Gedruckt 11/98
symlink(2) symlink(2)
ANWENDUNGSZWECK
Wie auch bei einem Hard Link kann eine Datei bei einem symbolischen
Link mehrere logische Namen haben. Das Vorhandensein eines Hard Links
garantiert die Existenz der Datei, auch wenn der Originaldateiname
gelöscht wurde. Bei einem symbolischen Link ist eine solche Garantie
nicht gegeben. Die durch das Argument name1 angegebene Datei muß nicht
einmal vorhanden sein, wenn der Link erstellt wird. Ein symbolischer
Link kann dateisystemübergreifend sein.
Für jede Komponente des Pfadnamens für den symbolischen Link werden
während der Auflösung die normalen Überprüfungen der Zugriffsrechte
durchgeführt.
SIEHE AUCH
cp(1), lchown(2), link(2), lstat(2), open(2), readlink(2), unlink(2),
unistd(4).
Seite 3 Reliant UNIX 5.44 Gedruckt 11/98