LINK
Section : Manuel du programmeur Linux (
2)
Mise à jour de la version anglaise : 23 juin 2004
Index
Menu principal
NOM
link - Crée un nouveau nom pour un fichier
SYNOPSIS
#include <unistd.h>
int link (const char *oldpath, const char *newpath);
DESCRIPTION
link()
crée un nouveau lien (aussi appelé lien matériel ou hard link) sur
un fichier existant.
Si
newpath
existe, il ne sera
pas
écrasé.
Ce nouveau nom pourra être utilisé exactement
comme l'ancien quelle que soit l'opération.
Les deux noms se réfèrent au même fichier (et ont donc les mêmes
permissions et propriétaire) et il est impossible de déterminer
quel nom était l'original.
VALEUR RENVOYÉE
Cet appel système renvoie 0 s'il réussit et -1 s'il échoue auquel cas
errno
est renseignée en conséquence.
ERREURS
- EACCES
-
L'écriture dans le répertoire contenant
newpath
n'est pas autorisée pour l'UID effectif du processus, ou l'un des
répertoires de
oldpath ou newpath
ne permet pas le parcours (exécution).
(Voir aussi
path_resolution(7).)
- EEXIST
-
newpath
existe déjà.
- EFAULT
-
oldpath
ou
newpath
pointent en dehors de l'espace d'adressage accessible.
- EIO
-
Une erreur d'entrée-sortie bas niveau s'est produite.
- ELOOP
-
oldpath ou newpath
contiennent une référence circulaire (à travers un lien symbolique).
- EMLINK
-
Le fichier référencé par
oldpath
possède déjà le nombre maximal de liens.
- ENAMETOOLONG
-
oldpath ou newpath est trop long.
- ENOENT
-
Un répertoire contenu dans
oldpath ou newpath
n'existe pas, ou est un lien symbolique pointant nulle part.
- ENOMEM
-
pas assez de mémoire pour le noyau.
- ENOSPC
-
Le périphérique contenant le fichier ne dispose pas d'assez de place
pour une nouvelle entrée de répertoire.
- ENOTDIR
-
Un élément du chemin d'accès
oldpath ou newpath
n'est pas réellement un répertoire.
- EPERM
-
oldpath
est un répertoire.
- EPERM
-
Le système de fichiers contenant
oldpath et newpath
ne permet pas la création de liens matériels.
- EROFS
-
Le fichier se trouve sur un système de fichiers en lecture seule.
- EXDEV
-
oldpath et newpath
ne résident pas sur le même système de fichiers monté.
(Linux permet de monter un système de fichiers
en plusieurs endroits, mais
link()
ne traverse pas les différents points de montage,
même si le même système de fichiers est monté sur chacun d'eux.)
CONFORMITÉ
SVr4, BSD 4.3, POSIX.1-2001 (excepté ce qui est noté plus haut).
NOTES
Les liens matériels créés par
link(),
ne peuvent pas s'étendre sur plusieurs systèmes de fichiers.
utilisez plutôt
symlink(2)
si ceci est nécessaire.
Selon POSIX.1-2001,
link()
devrait déréférencer
oldpath
s'il s'agit d'un lien symbolique.
Toutefois, Linux ne le fait pas : si
oldpath
est un lien symbolique,
newpath
est créé comme un lien (matériel) vers le même fichier lien symbolique
(c'est-à-dire que
newpath
devient un lien symbolique vers le même fichier auquel
oldpath
fait référence).
Certaines autres implémentations se comportent de la même manière
que Linux.
BOGUES
Sur les systèmes de fichiers NFS, le code de retour peut être faux
si le serveur NFS a créé correctement le lien mais s'est arrêté
avant de donner le code de retour.
Utiliser dans ce cas
stat(2)
pour vérifier si le lien a été effectivement créé.
VOIR AUSSI
ln(1),
linkat(2),
open(2),
rename(2),
stat(2),
symlink(2),
unlink(2),
path_resolution(7),
symlink(7)
TRADUCTION
Ce document est une traduction réalisée par Christophe Blaess
<http://www.blaess.fr/christophe/> le 10 octobre 1996
et révisée le 2 juillet 2008.
L'équipe de traduction a fait le maximum pour réaliser une adaptation
française de qualité. La version anglaise la plus à jour de ce document est
toujours consultable via la commande : « LANG=C man 2 link ».
N'hésitez pas à signaler à l'auteur ou au traducteur, selon le cas, toute
erreur dans cette page de manuel.
Index
- NOM
-
- SYNOPSIS
-
- DESCRIPTION
-
- VALEUR RENVOYÉE
-
- ERREURS
-
- CONFORMITÉ
-
- NOTES
-
- BOGUES
-
- VOIR AUSSI
-
- TRADUCTION
-
Dernière mise à jour : 2 juillet 2008