.\" -*- coding: UTF-8 -*-
.\" This manpage is Copyright (C) 1992 Drew Eckhardt;
.\"             and Copyright (C) 1993 Michael Haardt, Ian Jackson.
.\" and Copyright (C) 2006, 2014 Michael Kerrisk
.\"
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
.\" Modified 1993-07-23 by Rik Faith <faith@cs.unc.edu>
.\" Modified 1994-08-21 by Michael Haardt
.\" Modified 2004-06-23 by Michael Kerrisk <mtk.manpages@gmail.com>
.\" Modified 2005-04-04, as per suggestion by Michael Hardt for rename.2
.\"
.\"*******************************************************************
.\"
.\" This file was generated with po4a. Translate the source file.
.\"
.\"*******************************************************************
.TH link 2 "5 février 2023" "Pages du manuel de Linux 6.03" 
.SH NOM
link, linkat \- Créer un nouveau nom pour un fichier
.SH BIBLIOTHÈQUE
Bibliothèque C standard (\fIlibc\fP, \fI\-lc\fP)
.SH SYNOPSIS
.nf
\fB#include <unistd.h>\fP
.PP
\fBint link(const char *\fP\fIoldpath\fP\fB, const char *\fP\fInewpath\fP\fB);\fP
.PP
\fB#include <fcntl.h>           \fP/* Définition des constantes \fBAT_*\fP */
\fB#include <unistd.h>\fP
.PP
\fBint linkat(int \fP\fIolddirfd\fP\fB, const char *\fP\fIoldpath\fP\fB,\fP
\fB           int \fP\fInewdirfd\fP\fB, const char *\fP\fInewpath\fP\fB, int \fP\fIflags\fP\fB);\fP
.fi
.PP
.RS -4
Exigences de macros de test de fonctionnalités pour la glibc (consulter
\fBfeature_test_macros\fP(7))\ :
.RE
.PP
\fBlinkat\fP()\ :
.nf
    Depuis la version 2.10 de la glibc :
        _POSIX_C_SOURCE >= 200809L
    Avant la version 2.10 de la glibc :
        _ATFILE_SOURCE
.fi
.SH DESCRIPTION
\fBlink\fP() crée un nouveau lien (aussi appelé lien matériel ou hard link) sur
un fichier existant.
.PP
Si \fInewpath\fP existe, il ne sera \fIpas\fP écrasé.
.PP
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.
.SS linkat()
L'appel système \fBlinkat\fP() fonctionne exactement comme \fBlink\fP(), les
seules différences étant celles décrites ici.
.PP
Si le chemin donné dans \fIoldpath\fP est relatif, il est interprété par
rapport au répertoire référencé par le descripteur de fichier \fIolddirfd\fP
(plutôt que par rapport au répertoire courant du processus appelant, comme
dans \fBlink\fP() pour un chemin relatif).
.PP
Si \fIoldpath\fP est relatif et \fIolddirfd\fP a la valeur spéciale \fBAT_FDCWD\fP,
\fIoldpath\fP est interprété relativement au répertoire courant du processus
appelant, (comme \fBlink\fP()).
.PP
Si \fIoldpath\fP est un chemin absolu, \fIolddirfd\fP est ignoré.
.PP
L'interprétation de \fInewpath\fP est identique à celle de \fIoldpath\fP, excepté
qu'un chemin relatif est interprété par rapport au répertoire correspondant
à \fInewdirfd\fP.
.PP
Les valeurs suivantes peuvent être combinées avec un opérateur OU bit à bit
dans le paramètre \fIflags\fP\ :
.TP 
\fBAT_EMPTY_PATH\fP (depuis Linux 2.6.39)
.\" commit 11a7b371b64ef39fc5fb1b6f2218eef7c4d035e3
.\" Before glibc 2.16, defining _ATFILE_SOURCE sufficed
Si \fIoldpath\fP est une chaîne vide, créer un lien vers le fichier référencé
par \fIolddirfd\fP (qui peut avoir été obtenu en utilisant \fBopen\fP(2) avec
l'attribut \fBO_PATH\fP). Dans ce cas, \fIolddirfd\fP peut faire référence à
n'importe quel type de fichier à l’exception d’un répertoire. Cette
opération ne fonctionne généralement pas si le nombre de liens du fichier
est égal à zéro (les fichiers créés par \fBO_TMPFILE\fP sans \fBO_EXCL\fP
constituent une exception). L'appelant doit disposer de la capacité
\fBCAP_DAC_READ_SEARCH\fP pour pouvoir utiliser cet attribut. Cet attribut est
propre à Linux, et \fB_GNU_SOURCE\fP doit être initialisé pour obtenir sa
définition.
.TP 
\fBAT_SYMLINK_FOLLOW\fP (depuis Linux 2.6.18)
Par défaut, \fBlinkat\fP() ne déréférence pas \fIoldpath\fP si c'est un lien
symbolique (de même que \fBlink\fP()). L'attribut \fBAT_SYMLINK_FOLLOW\fP peut
être passé dans \fIflags\fP pour forcer le déréférencement de \fIoldpath\fP si
c'est un lien symbolique. Si procfs est monté, cet attribut offre une
alternative à \fBAT_EMPTY_PATH\fP si on l'utilise de la façon suivante\ :
.IP
.in +4n
.EX
linkat(AT_FDCWD, "/proc/self/fd/<fd>", newdirfd,
       newname, AT_SYMLINK_FOLLOW);
.EE
.in
.PP
Avant Linux\ 2.6.18, l'argument \fIflags\fP n'était pas utilisé et devait être
\fB0\fP.
.PP
Consultez \fBopenat\fP(2) pour une explication de la nécessité de \fBlinkat\fP().
.SH "VALEUR RENVOYÉE"
En cas de succès, zéro est renvoyé. En cas d'erreur, \fB\-1\fP est renvoyé et
\fIerrno\fP est définie pour préciser l'erreur.
.SH ERREURS
.TP 
\fBEACCES\fP
L'écriture dans le répertoire contenant \fInewpath\fP n'est pas autorisée, ou
l'un des répertoires ne permet pas le parcours (exécution) dans le chemin
d’accès de \fIoldpath\fP ou \fInewpath\fP. Consultez aussi \fBpath_resolution\fP(7).
.TP 
\fBEDQUOT\fP
Le quota de blocs de disque de l'utilisateur sur le système de fichiers a
été atteint.
.TP 
\fBEEXIST\fP
\fInewpath\fP existe déjà.
.TP 
\fBEFAULT\fP
\fIoldpath\fP ou \fInewpath\fP pointent en dehors de l'espace d'adressage
accessible.
.TP 
\fBEIO\fP
Une erreur d'entrée\-sortie s'est produite.
.TP 
\fBELOOP\fP
Trop de liens symboliques ont été rencontrés en parcourant \fIoldpath\fP ou
\fInewpath\fP.
.TP 
\fBEMLINK\fP
Le fichier auquel renvoie \fIoldpath\fP a déjà atteint le nombre maximal de
liens vers lui. Par exemple, sur un système de fichiers \fBext4\fP(5) qui
n'utilise pas la fonctionnalité \fIdir_index\fP, la limite du nombre de liens
matériels vers un fichier est de 65\ 000\ ;\ sur \fBbtrfs\fP(5), la limite est de
65\ 535.
.TP 
\fBENAMETOOLONG\fP
\fIoldpath\fP ou \fInewpath\fP est trop long.
.TP 
\fBENOENT\fP
Un répertoire contenu dans \fIoldpath\fP ou \fInewpath\fP n'existe pas, ou est un
lien symbolique pointant nulle part.
.TP 
\fBENOMEM\fP
La mémoire disponible du noyau n'était pas suffisante.
.TP 
\fBENOSPC\fP
Le périphérique contenant le fichier n'a pas de place pour une nouvelle
entrée de répertoire.
.TP 
\fBENOTDIR\fP
Un élément utilisé comme répertoire dans \fIoldpath\fP ou \fInewpath\fP n'est pas
réellement un répertoire.
.TP 
\fBEPERM\fP
\fIoldpath\fP est un répertoire.
.TP 
\fBEPERM\fP
Le système de fichiers contenant \fIoldpath\fP et \fInewpath\fP ne permet pas la
création de liens matériels.
.TP 
\fBEPERM\fP (depuis Linux 3.6)
L'appelant n'a pas le droit pour créer un lien matériel vers ce fichier
(consultez la description de \fI/proc/sys/fs/protected_hardlinks\fP dans
\fBproc\fP(5)).
.TP 
\fBEPERM\fP
\fIoldpath\fP est marqué comme immuable ou seulement complétable (voir
\fBioctl_iflags\fP(2)).
.TP 
\fBEROFS\fP
Le fichier se trouve sur un système de fichiers en lecture seule.
.TP 
\fBEXDEV\fP
\fIoldpath\fP et \fInewpath\fP 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 \fBlink\fP() ne fonctionne pas à travers différents points de
montage, même si le même système de fichiers est monté sur les deux.
.PP
Les erreurs supplémentaires suivantes peuvent également se produire pour
\fBlinkat\fP()\ :
.TP 
\fBEBADF\fP
\fIoldpath\fP (\fInewpath\fP) est relatif, mais \fIolddirfd\fP (\fInewdirfd\fP) n'est ni
\fBAT_FDCWD\fP ni un descripteur de fichier valable.
.TP 
\fBEINVAL\fP
\fIflags\fP contient un drapeau non valable.
.TP 
\fBENOENT\fP
\fBAT_EMPTY_PATH\fP est indiqué dans \fIflags\fP mais l'appelant n'a pas la
capacité \fBCAP_DAC_READ_SEARCH\fP.
.TP 
\fBENOENT\fP
Une tentative de lier vers le fichier \fI/proc/self/fd/NN\fP correspondant à un
descripteur de fichier créé avec
.IP
.in +4n
.EX
open(path, O_TMPFILE | O_EXCL, mode);
.EE
.in
.IP
Consultez \fBopen\fP(2).
.TP 
\fBENOENT\fP
Il y a eu une tentative de lien vers le fichier \fI/proc/self/fd/NN\fP
correspondant à un fichier qui a été effacé.
.TP 
\fBENOENT\fP
\fIoldpath\fP est un chemin relatif et \fIolddirfd\fP fait référence à un
répertoire qui a été supprimé, ou bien \fInewpath\fP est un chemin relatif et
\fInewdirfd\fP fait référence à un répertoire qui a été supprimé.
.TP 
\fBENOTDIR\fP
\fIoldpath\fP est un chemin relatif, et \fIolddirfd\fP est un descripteur de
fichier ne référençant pas un répertoire\ ; ou bien c'est le cas pour
\fInewpath\fP et \fInewdirfd\fP.
.TP 
\fBEPERM\fP
\fBAT_EMPTY_PATH\fP a été précisé dans \fIflags\fP, \fIoldpath\fP est une chaîne
vide, et \fIolddirfd\fP fait référence à un répertoire.
.SH VERSIONS
\fBlinkat\fP() a été ajouté à Linux\ 2.6.16\ ; la prise en charge de la
bibliothèque ajoutée dans la glibc\ 2.4.
.SH STANDARDS
.\" SVr4 documents additional ENOLINK and
.\" EMULTIHOP error conditions; POSIX.1 does not document ELOOP.
.\" X/OPEN does not document EFAULT, ENOMEM or EIO.
\fBlink\fP()\ : SVr4, 4.3BSD, POSIX.1\-2001 (mais consultez la section NOTES),
POSIX.1\-2008.
.PP
\fBlinkat\fP()\ : POSIX.1\-2008.
.SH NOTES
Les liens matériels créés par \fBlink\fP(), ne peuvent pas s'étendre sur
plusieurs systèmes de fichiers. Utilisez plutôt \fBsymlink\fP(2) si cela est
nécessaire.
.PP
.\" more precisely: since Linux 1.3.56
.\" For example, the default Solaris compilation environment
.\" behaves like Linux, and contributors to a March 2005
.\" thread in the Austin mailing list reported that some
.\" other (System V) implementations did/do the same -- MTK, Apr 05
Selon POSIX.1\-2001, \fBlink\fP() devrait déréférencer \fIoldpath\fP s'il s'agit
d'un lien symbolique. Cependant, depuis Linux\ 2.0, Linux ne se comporte pas
comme cela\ : si \fIoldpath\fP est un lien symbolique, alors \fInewpath\fP est créé
comme un lien (matériel) vers le même fichier de lien symbolique
(c'est\-à\-dire que \fInewpath\fP devient un lien symbolique vers le fichier sur
lequel pointe \fIoldpath\fP). Certaines autres implémentations ont le même
comportement que Linux. POSIX.1\-2008 change la spécification de \fBlink\fP(),
en rendant dépendant de l'implémentation le fait que \fIoldpath\fP soit
déréférencé s'il s'agit d'un lien symbolique. Pour un contrôle précis sur le
traitement des liens symboliques lors de la création d'un lien, utilisez
\fBlinkat\fP().
.SS "Notes de la glibc"
Sur les anciens noyaux où \fBlinkat\fP() n'est pas disponible, la fonction
enveloppe de la glibc se rabat sur l'utilisation de \fBlink\fP(), sauf si
\fBAT_SYMLINK_FOLLOW\fP est indiqué. Quand \fIoldpath\fP et \fInewpath\fP sont des
chemins relatifs, la glibc construit des chemins à partir des liens
symboliques dans \fI/proc/self/fd\fP correspondant aux paramètres \fIolddirfd\fP
et \fInewdirfd\fP.
.SH 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 \fBstat\fP(2) pour vérifier si le lien a
été effectivement créé.
.SH "VOIR AUSSI"
\fBln\fP(1), \fBopen\fP(2), \fBrename\fP(2), \fBstat\fP(2), \fBsymlink\fP(2), \fBunlink\fP(2),
\fBpath_resolution\fP(7), \fBsymlink\fP(7)
.PP
.SH TRADUCTION
La traduction française de cette page de manuel a été créée par
Christophe Blaess <https://www.blaess.fr/christophe/>,
Stéphan Rafin <stephan.rafin@laposte.net>,
Thierry Vignaud <tvignaud@mandriva.com>,
François Micaux,
Alain Portal <aportal@univ-montp2.fr>,
Jean-Philippe Guérard <fevrier@tigreraye.org>,
Jean-Luc Coulon (f5ibh) <jean-luc.coulon@wanadoo.fr>,
Julien Cristau <jcristau@debian.org>,
Thomas Huriaux <thomas.huriaux@gmail.com>,
Nicolas François <nicolas.francois@centraliens.net>,
Florentin Duneau <fduneau@gmail.com>,
Simon Paillard <simon.paillard@resel.enst-bretagne.fr>,
Denis Barbier <barbier@debian.org>,
David Prévot <david@tilapin.org>,
Frédéric Hantrais <fhantrais@gmail.com>
et
Jean-Philippe MENGUAL <jpmengual@debian.org>
.
.PP
Cette traduction est une documentation libre ; veuillez vous reporter à la
.UR https://www.gnu.org/licenses/gpl-3.0.html
GNU General Public License version 3
.UE
concernant les conditions de copie et 
de distribution. Il n'y a aucune RESPONSABILITÉ LÉGALE.
.PP
Si vous découvrez un bogue dans la traduction de cette page de manuel, 
veuillez envoyer un message à
.MT debian-l10n-french@lists.debian.org
.ME .