Provided by: manpages-fr-dev_3.57d1p1-1_all bug

NOM

       linkat - Créer un lien vers un fichier relatif à un répertoire

SYNOPSIS

       #include <fcntl.h> /* Définition des constantes AT_* */
       #include <unistd.h>

       int linkat(int olddirfd, const char *oldpath,
                  int newdirfd, const char *newpath, int flags);

   Exigences    de    macros    de   test   de   fonctionnalités   pour   la   glibc   (consultez
   feature_test_macros(7)) :

       linkat() :
           Depuis la glibc 2.10 :
               _XOPEN_SOURCE >= 700 || _POSIX_C_SOURCE >= 200809L
           Avant la glibc 2.10 :
               _ATFILE_SOURCE

DESCRIPTION

       L'appel système linkat() fonctionne exactement comme link(2), les seules différences étant
       celles décrites dans cette page.

       Si  le  chemin donné dans oldpath est relatif, il est interprété par rapport au répertoire
       référencé par le descripteur de fichier olddirfd (plutôt que  par  rapport  au  répertoire
       courant du processus appelant, comme dans link(2)).

       Si  oldpath  est relatif et olddirfd a la valeur spéciale AT_FDCWD, oldpath est interprété
       relativement au répertoire courant du processus appelant, comme link(2).

       Si oldpath est un chemin absolu, olddirfd est ignoré.

       L'interprétation de newpath est identique à celle de oldpath, excepté qu'un chemin relatif
       est interprété par rapport au répertoire correspondant à newdirfd.

       Les valeurs suivantes peuvent être combinées avec un OU binaire dans le paramètre flags :

       AT_EMPTY_PATH (depuis Linux 2.6.39)
              Si  oldpath  est  une  chaîne  vide,  créer  un  lien vers le fichier référencé par
              olddirfd (qui peut avoir été obtenu en utilisant open(2) avec le  drapeau  O_PATH).
              Dans  ce  cas,  olddirfd  peut  référer  à  tout type de fichier, pas uniquement un
              répertoire. L'appelant doit avoir la capacité CAP_DAC_READ_SEARCH pour utiliser  ce
              drapeau.  Cette  sécurité  empêche  des utilisateurs arbitraires de créer des liens
              matériels  en  utilisant  des  descripteurs  de  fichiers  reçus  via  socket  UNIX
              (consultez la discussion au sujet de SCM_RIGHTS dans unix(7)).

       AT_SYMLINK_FOLLOW (depuis Linux 2.6.18)
              Par  défaut,  linkat()  ne  déréférence pas oldpath si c'est un lien symbolique (de
              même que link(2)). L'attribut AT_SYMLINK_FOLLOW peut être  passé  dans  flags  pour
              forcer le déréférencement de oldpath si c'est un lien symbolique.

       Avant le noyau 2.6.18, l'argument flags n'était pas utilisé, et devait être nul.

VALEUR RENVOYÉE

       S'il  réussit, linkat() renvoie zéro. En cas d'erreur, il renvoie -1 et remplit errno avec
       la valeur d'erreur.

ERREURS

       Les erreurs  renvoyées  par  link(2)  peuvent  aussi  l'être  par  linkat().  Les  erreurs
       supplémentaires suivantes peuvent également se produire pour linkat() :

       EBADF  olddirfd ou newdirfd n'est pas un descripteur de fichier valable.

       EINVAL flags contient un drapeau invalide.

       ENOENT AT_EMPTY_PATH   est  indiqué  dans  flags  mais  l'appelant  n'a  pas  la  capacité
              CAP_DAC_READ_SEARCH.

       ENOENT Une  tentative  de  lier  vers  le  fichier  /proc/self/fd/NN  correspondant  à  un
              descripteur de fichier créé avec

                  open(path, O_TMPFILE | O_EXCL, mode);

              a été réalisée. Consultez open(2).

       ENOTDIR
              oldpath  est  un  chemin  relatif,  et  olddirfd  est  un descripteur de fichier ne
              référençant pas un répertoire ; ou bien c'est le cas pour newpath et newdirfd.

VERSIONS

       linkat() a été ajouté au noyau Linux dans sa version 2.6.16 ; la glibc le gère  depuis  la
       version 2.4.

CONFORMITÉ

       POSIX.1-2008.

NOTES

       Consultez openat(2) pour une explication de la nécessité de linkat().

VOIR AUSSI

       link(2), openat(2), path_resolution(7), symlink(7)

COLOPHON

       Cette  page  fait partie de la publication 3.57 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/>.

       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> ».