NOM¶
link - Créer 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 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¶
S'il réussit, cet appel système renvoie 0. S'il échoue, il
renvoie -1 et remplit
errno 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). Consultez 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.
- EPERM (depuis Linux 3.6)
- L'appelant n'a pas le droit de créer un lien
matériel vers ce fichier (consultez la description de
/proc/sys/fs/protected_hardlink dans proc(5)).
- 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.
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.44 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¶
Depuis 2010, cette traduction est maintenue à l'aide de l'outil po4a
<
http://po4a.alioth.debian.org/> par l'équipe de traduction
francophone au sein du projet perkamon
<
http://perkamon.alioth.debian.org/>.
Christophe Blaess <
http://www.blaess.fr/christophe/> (1996-2003), Alain
Portal <
http://manpagesfr.free.fr/> (2003-2006). Julien Cristau et
l'équipe francophone de traduction de Debian (2006-2009).
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> ».