table of contents
LINK(2) | Manuel du programmeur Linux | LINK(2) |
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 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 <URL:http://www.kernel.org/doc/man-pages/>.
TRADUCTION¶
Depuis 2010, cette traduction est maintenue à l'aide de l'outil po4a <URL:http://po4a.alioth.debian.org/> par l'équipe de traduction francophone au sein du projet perkamon <URL:http://alioth.debian.org/projects/perkamon/>.
Christophe Blaess <URL:http://www.blaess.fr/christophe/> (1996-2003), Alain Portal <URL: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 à <perkamon-l10n-fr@lists.alioth.debian.org>.
Vous pouvez toujours avoir accès à la version anglaise de ce document en utilisant la commande « LC_ALL=C man <section> <page_de_man> ».
21 août 2008 | Linux |