SYMLINK(2)

BEZEICHNUNG
symlink, symlinkat - erzeugt einen neuen Namen für eine Datei

ÜBERSICHT
#include <unistd.h>

int symlink(const char *Ziel, const char *Linkpfad);
#include <fcntl.h>           /* Definition der AT_*-Konstanten */
#include <unistd.h>

int symlinkat(const char *Ziel, int newdirfd, const char *Linkpfad);

Mit Glibc erforderliche Makros (siehe feature_test_macros(7)):

symlink():
    _XOPEN_SOURCE >= 500 || _POSIX_C_SOURCE >= 200112L
        || /* Glibc-Versionen <= 2.19: */ _BSD_SOURCE

symlinkat():
    Seit Glibc 2.10:
        _POSIX_C_SOURCE >= 200809L
    Vor Glibc 2.10:
        _ATFILE_SOURCE

BESCHREIBUNG
symlink erzeugt einen symbolischen Link Linkpfad, der die Zeichenkette Ziel enthält.

Symbolische Links werden zur Laufzeit so interpretiert, als wenn der neue Dateiname durch den alten ersetzt worden wäre. Dies gilt für Dateien und Verzeichnisse.

Symbolische Links können ..-Komponenten im Pfad beinhalten. Wenn die zwei Punkte den Anfang des Links bilden, werden sie als das Elternverzeichnis des Links interpretiert.

Ein symbolischer Link (auch »soft link« genannt) kann auf eine existierende oder eine nicht existierende Datei zeigen. Links auf nicht existierende Dateien werden als toter Link bezeichnet.

Die Rechte eines symbolischen Links sind irrelevant. Die Besitzverhältnisse werden bei der Auflösung des Links ignoriert. Sie werden überprüft, wenn der Link umbenannt oder gelöscht werden soll und sich in einem Verzeichnis mit gesetztem »Sticky Bit« (S_ISVTX) befindet.

Wenn Linkpfad existiert, wird es nicht überschrieben.

  symlinkat()
Der Systemaufruf symlinkat() funktioniert genauso wie symlink(), außer den hier beschriebenen Unterschieden.

Falls der in Linkpfad übergebene Pfadname relativ ist wird er als relativ zu dem im Dateideskriptor newdirfd referenzierten Verzeichnis interpretiert (statt relativ zum aktuellen Arbeitsverzeichnis des aufrufenden Prozesses, wie es bei symlink() für einen relativen Pfadnamen erfolgt).

Falls Linkpfad relativ ist und newdirfd den besonderen Wert AT_FDCWD annimmt wird Linkpfad als relativ zum aktuellen Arbeitsverzeichnis des aufrufenden Prozesses interpretiert (wie symlink()).

Falls Linkpfad absolut ist wird newdirfd ignoriert.

RÜCKGABEWERT
Bei Erfolg wird Null zurückgegeben. Bei einem Fehler wird -1 zurückgegeben und errno entsprechend gesetzt.

FEHLER

EACCES
    Der Schreibzugriff auf das Verzeichnis, in dem Linkpfad angelegt werden soll, wurde verweigert oder eines der Verzeichnisse im Pfad-Präfix von Linkpfad erlaubt keine Suchaktionen. (Siehe auch path_resolution(7).)

EDQUOT
    Das Ressourcenkontingent des Benutzers auf diesem Dateisystem ist ausgeschöpft. Die Ressourcen können Inodes oder Datenträgerblöcke sein, abhängig von der Implementation des Dateisystems.

EEXIST
    Linkpfad ist schon vorhanden.

EFAULT
    Ziel oder Linkpfad zeigt aus dem für Sie zugänglichen Adressraum heraus.

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

ELOOP
    Bei der Auflösung von Linkpfad wurden zu viele symbolische Links gefunden.

ENAMETOOLONG
    Ziel oder Linkpfad war zu lang.

ENOENT
    Eine Komponente des Verzeichnisses Linkpfad existiert nicht oder ist ein toter Link oder Ziel oder Linkpfad ist die leere Zeichenkette.

ENOMEM
    Es war nicht genügend Kernelspeicher verfügbar.

ENOSPC
    Das Gerät, das die die Datei enthält, hat keinen Platz für einen neuen Verzeichniseintrag.

ENOTDIR
    Eine als Verzeichnis verwendete Komponente von Linkpfad ist tatsächlich kein Verzeichnis.

EPERM
    Das Dateisystem, welches Linkpfad beherbergt, unterstützt das Erzeugen von symbolischen Links nicht.

EROFS
    Linkpfad befindet sich in einem schreibgeschützten Dateisystem.

Die folgenden zusätzlichen Fehler können bei symlinkat() auftreten:

EBADF
    newdirfd ist kein zulässiger Dateideskriptor.

ENOENT
    Der Linkpfad ist relativ und newdirfd bezieht sich auf ein Verzeichnis, das gelöscht wurde.

ENOTDIR
    Der Linkpfad ist relativ und newdirfd ist ein Dateideskriptor, der sich auf eine Datei bezieht, die kein Verzeichnis sein darf.

VERSIONEN
symlinkat() wurde zu Linux in Kernel 2.6.16 hinzugefügt; Bibliotheksunterstützung wurde zu Glibc in Version 2.4 hinzugefügt.

KONFORM ZU
symlink(): SVr4, 4.3BSD, POSIX.1-2001, POSIX.1-2008.

symlinkat(): POSIX.1-2008.

ANMERKUNGEN
Ziel wird nicht geprüft.

Das Löschen des Ziels eines symbolischen Links löscht diese Datei (wenn sie keine weiteren harten Links hat). Wenn dieses Verhalten nicht erwünscht ist, verwenden Sie link(2).

  Anmerkungen zur Glibc
Wenn in älteren Kerneln symlinkat() nicht verfügbar ist, weicht die Glibc-Wrapper-Funktion auf symlink() aus. Wenn Linkpfad relativ ist, konstruiert die Glibc einen Pfadnamen, der auf dem symbolischen Link in /proc/self/fd basiert, der dem newdirfd-Argument entspricht.

SIEHE AUCH
ln(1), namei(1), lchown(2), link(2), lstat(2), open(2), readlink(2), rename(2), unlink(2), path_resolution(7), symlink(7)

KOLOPHON
Diese Seite ist Teil der Veröffentlichung 4.15 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 https://www.kernel.org/doc/man-pages/.

ÜBERSETZUNG
Die deutsche Übersetzung dieser Handbuchseite wurde von Elmar Jansen <ej@pumuckel.gun.de>, Martin Schulze <joey@infodrom.org>, Martin Eberhard Schauer <Martin.E.Schauer@gmx.de>, Mario Blättermann <mario.blaettermann@gmail.com>, Helge Kreutzmann <debian@helgefjell.de> und Dr. Tobias Quathamer <toddy@debian.org> 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>.