NOM
link - Crée un nouveau nom pour un fichier
SYNOPSIS
#include <unistd.h>
int link(const char *oldpath, const char *newpath);
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 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
En cas de réussite, zéro est renvoyé, sinon -1 est renvoyé et errno
contient le code d’erreur.
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 s’est produite.
ELOOP Trop de liens symboliques ont été rencontrés en parcourant
oldpath ou newpath.
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 n’a pas 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. (Linux permet de monter un système de fichiers à
différents endroits, mais link() ne fonctionne pas sur
différents points de montage, même si le système de fichiers
sous‐jacent est le même.
CONFORMITÉ
SVr4, BSD 4.3, POSIX.1-2001 (mais consultez la section NOTES).
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. Cependant, depuis le noyau 2.0, Linux ne se
comporte pas comme cela : si oldpath est un lien symbolique, alors
newpath est créé comme un lien matériel vers le même fichier de lien
symbolique (c’est‐à‐dire que newpath devient un lien symbolique vers le
fichier sur lequel pointe oldpath). Certaines autres implémentations
ont le même comportement que Linux. POSIX.1-2008 change la
spécification de link(), en rendant dépendant de l’implémentation le
fait que oldpath est déréférencé s’il s’agit d’un lien symbolique. Pour
un contrôle précis sur le traitement des liens symboliques pour la
création d’un lien, consultez linkat(2).
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)
COLOPHON
Cette page fait partie de la publication 3.23 du projet man-pages
Linux. Une description du projet et des instructions pour signaler des
anomalies peuvent être trouvées à l’adresse
http://www.kernel.org/doc/man-pages/.
TRADUCTION
Cette page de manuel a été traduite et mise à jour par Christophe
Blaess <http://www.blaess.fr/christophe/> entre 1996 et 2003, puis par
Alain Portal <aportal AT univ-montp2 DOT fr> jusqu’en 2006, et mise à
disposition sur http://manpagesfr.free.fr/.
Les mises à jour et corrections de la version présente dans Debian sont
directement gérées par Julien Cristau <jcristau@debian.org> et l’équipe
francophone de traduction de Debian.
Veuillez signaler toute erreur de traduction en écrivant à
<debian-l10n-french@lists.debian.org> ou par un rapport de bogue sur le
paquet manpages-fr.
Vous pouvez toujours avoir accès à la version anglaise de ce document
en utilisant la commande « man -L C <section> <page_de_man> ».