.\" -*- 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 .\" .\" %%%LICENSE_START(VERBATIM) .\" Permission is granted to make and distribute verbatim copies of this .\" manual provided the copyright notice and this permission notice are .\" preserved on all copies. .\" .\" Permission is granted to copy and distribute modified versions of this .\" manual under the conditions for verbatim copying, provided that the .\" entire resulting derived work is distributed under the terms of a .\" permission notice identical to this one. .\" .\" Since the Linux kernel and libraries are constantly changing, this .\" manual page may be incorrect or out-of-date. The author(s) assume no .\" responsibility for errors or omissions, or for damages resulting from .\" the use of the information contained herein. The author(s) may not .\" have taken the same level of care in the production of this manual, .\" which is licensed free of charge, as they might when working .\" professionally. .\" .\" Formatted or processed versions of this manual, if unaccompanied by .\" the source, must acknowledge the copyright and authors of this work. .\" %%%LICENSE_END .\" .\" Modified 1993-07-23 by Rik Faith .\" Modified 1994-08-21 by Michael Haardt .\" Modified 2004-06-23 by Michael Kerrisk .\" 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 "21 décembre 2020" Linux "Manuel du programmeur Linux" .SH NOM link, linkat \- Créer un nouveau nom pour un fichier .SH SYNOPSIS .nf \fB#include \fP .PP \fBint link(const char *\fP\fIoldpath\fP\fB, const char *\fP\fInewpath\fP\fB);\fP .PP \fB#include \fP/* Définition des constantes AT_* */ \fB#include \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()\ : .PD 0 .ad l .RS 4 .TP 4 Depuis la glibc 2.10 : _POSIX_C_SOURCE\ >=\ 200809L .TP Avant la glibc 2.10 : _ATFILE_SOURCE .RE .ad .PD .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/", 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 reçoit une valeur adéquate. .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 à travers différents points de montage, même si le même système de fichiers y est monté. .PP Les erreurs supplémentaires suivantes peuvent également se produire pour \fBlinkat\fP()\ : .TP \fBEBADF\fP \fIolddirfd\fP ou \fInewdirfd\fP n'est pas 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é au noyau Linux dans sa version\ 2.6.16\ ; la glibc le gère depuis la version\ 2.4. .SH CONFORMITÉ .\" 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 kernel 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 le noyau 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) .SH COLOPHON Cette page fait partie de la publication\ 5.10 du projet \fIman\-pages\fP Linux. Une description du projet et des instructions pour signaler des anomalies et la dernière version de cette page peuvent être trouvées à l'adresse \%https://www.kernel.org/doc/man\-pages/. .PP .SH TRADUCTION La traduction française de cette page de manuel a été créée par Christophe Blaess , Stéphan Rafin , Thierry Vignaud , François Micaux, Alain Portal , Jean-Philippe Guérard , Jean-Luc Coulon (f5ibh) , Julien Cristau , Thomas Huriaux , Nicolas François , Florentin Duneau , Simon Paillard , Denis Barbier , David Prévot , Frédéric Hantrais et Jean-Philippe MENGUAL . .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 .