LINK(2)

BEZEICHNUNG
link - erzeuge einen neuen Verweis auf eine Datei

ÜBERSICHT
#include <unistd.h>

int link(const char *oldpath, const char *newpath);

BESCHREIBUNG
link erzeugt einen neuen Verweis (auch bekannt als Hardlink) auf eine bestehenden Datei Wenn newpath existiert wird er nicht überschrieben. Der neue Name kann genauso wie der alte Name für alle Aktionen benutzt werden. Beide Namen zeigen auf die gleiche Datei (haben somit die gleichen Rechte und Eigentümer) und es ist unmöglich festzustellen welcher Name der Originalname ist.

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

ERRORS

EXDEV
    oldpath und newpath sind nicht im gleichen Dateisystem.

EPERM
    Das Dateisystem welches oldpath und newpath beinhaltet, erlaubt nicht das Erzeugen von Hardlinks.

EFAULT
    oldpath oder newpath zeigt außerhalb des Benutzer-Adressraums.

EACCES
    Die effektive uid des Prozesses hat kein Schreibrecht in dem Verzeichnis, in dem newpath angelegt werden soll, oder eines der Verzeichnisses oldpath oder newpath verbietet das Suchen (execute permission fehlt).

ENAMETOOLONG
    oldpath oder newpath war zu lang.

ENOENT
    Eine Komponente des Verzeichnisses oldpath oder newpath existiert nicht oder ist ein unsicherer symbolischer Link.

ENOTDIR
    Eine Komponente des Verzeichnisses oldpath oder newpath ist kein Directory.

ENOMEM
    Es war nicht genügend Kernel-Memory verfügbar.

EROFS
    Die Datei ist in einem nur lesbaren Dateisystem.

EEXIST
    newpath ist schon vorhanden.

EMLINK
    Die Datei auf die oldpath zeigt hat schon die maximale Anzahl links.

ELOOP
    oldpath oder newpath beinhalten einen Verweis auf einen kreisenden symbolischen Link, beziehungsweise auf einen symbolischen Link der auf sich selbst verweist.

ENOSPC
    Die Gerätedatei die die Datei enthält hat keinen Platz für einen neuen Verzeichniseintrag.

EPERM
    oldpath ist der . oder .. Eintrag eines Directory's.

BEMERKUNGEN
Hard links, die mit link, kreiert werden können nicht auf verschiedenen Dateisystemen liegen. Benutze dafür symlink

KONFORM ZU
SVID, AT&T, POSIX, BSD 4.3

FEHLER
In NFS Dateisystemen kann der Rückgabewert falsch sein, wenn der NFS-Server beim Erzeugen des Links stirbt. Benutze stat(2) um zu prüfen ob der Link angelegt wurde.

SIEHE AUCH
symlink(2), unlink(2), rename(2), open(2), stat(2), ln(1), link(8)