link(2) link(2)
NAME
link - Link auf eine Datei einrichten
SYNTAX
#include <unistd.h>
int link(const char *path1, const char *path2);
BESCHREIBUNG
path1 weist auf einen Pfadnamen, der eine vorhandene Datei benennt.
path2 weist auf einen Pfadnamen, der den neu zu erstellenden Verzeich-
niseintrag benennt. link() erstellt einen neuen Link (Verzeichnisein-
trag) auf die vorhandene Datei und erhöht den Zähler für die Links um
1.
Bei erfolgreicher Ausführung markiert link() das Feld stctime der
Datei zum Aktualisieren. Auch die Felder stctime und stmtime des
Verzeichnisses, die die neuen Einträge enthalten, werden zur Aktuali-
sierung markiert.
FEHLER
Die folgenden Beschreibungen der Fehlercodes sind funktionsspezifisch.
Eine allgemeingültige Beschreibung finden Sie in introprm2(2) bzw. in
errno(5).
link() ist erfolglos, und es wird kein Link erstellt, wenn einer oder
mehrere der nachstehenden Punkte zutreffen:
EACCES Entweder darf eine Komponente in einer der beiden Pfad-
angaben nicht durchsucht werden, oder für den angefor-
derten Link muß mit einem Modus in ein Verzeichnis
geschrieben werden, bei dem der Schreibzugriff verwei-
gert wird, oder der aufrufende Prozeß verfügt nicht über
die Berechtigung zum Zugriff auf die vorhandene Datei,
dies ist bei dieser Implementierung jedoch erforderlich.
EEXIST Der durch path2 angegebene Link ist bereits vorhanden.
EFAULT path1 oder path2 weist über den zugewiesenen Adreßraum
des Prozesses hinaus.
EINTR Ein Signal wurde während des Systemaufrufs link() abge-
fangen.
ELOOP Zu viele symbolische Links wurden bei der Auflösung von
path1 oder path2 angetroffen.
EMLINK Die Höchstzahl der Links auf eine Datei würde LINKMAX
überschreiten.
Seite 1 Reliant UNIX 5.44 Gedruckt 11/98
link(2) link(2)
EMULTIHOP Komponenten von path1 oder path2 erfordern den Sprung
auf mehrere ferne Rechner, und der Dateisystemtyp läßt
dies jedoch nicht zu.
ENAMETOOLONG Die Länge des Arguments path1 oder path2 überschreitet
PATHMAX, oder eine Komponente von path1 oder path2 ist
länger als NAMEMAX.
ENOTDIR Eine Komponente in einer der beiden Pfadangaben ist kein
Verzeichnis.
ENOENT path1 oder path2 ist ein leerer Pfadname.
ENOENT Eine Komponente in einer der beiden Pfadangaben ist
nicht vorhanden.
ENOENT Die durch path1 angegebene Datei ist nicht vorhanden.
ENOLINK path1 oder path2 weist auf einen fernen Rechner, und die
Verbindung zu diesem Rechner ist nicht mehr aktiv.
ENOSPC Das Verzeichnis, das den Link enthalten soll, kann nicht
erweitert werden.
EPERM Die durch path1 angegebene Datei ist ein Verzeichnis,
und die effektive Benutzer-ID ist nicht diejenige des
Systemverwalters.
EROFS Der gewünschte Link erfordert das Schreiben in ein Ver-
zeichnis, dessen Dateisystem schreibgeschützt ist.
EXDEV Der durch path2 angegebene Link und die durch path1
angegebene Datei befinden sich auf verschiedenen logi-
schen Geräten (Dateisystemen), und die Implementierung
unterstützt keine Links zwischen Dateisystemen, oder
path1 verweist auf einen angegebenen STREAM.
Die Funktion link() 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 wird 0 zurückgegeben. Andernfalls wird
-1 zurückgegeben und errno zur Anzeige des Fehlers gesetzt.
SIEHE AUCH
unlink(2), unistd(4).
Seite 2 Reliant UNIX 5.44 Gedruckt 11/98