Provided by: manpages-fr-dev_3.32d0.2p4-1_all bug

NOM

       openat - Ouvrir un fichier relativement à un descripteur de répertoire

SYNOPSIS

       #include <fcntl.h>

       int openat(int dirfd, const char *pathname, int flags);
       int openat(int dirfd, const char *pathname, int flags, mode_t mode);

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

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

DESCRIPTION

       L'appel système openat() fonctionne de la même façon que open(2),  les  différences  étant
       décrites dans cette page.

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

       Si  pathname  est  un  chemin  relatif,  et  si dirfd a la valeur spéciale AT_FDCWD, alors
       pathname est interprété par rapport au répertoire courant  du  processus  appelant,  comme
       dans open(2).

       Si pathname est un chemin absolu, dirfd est ignoré.

VALEUR RENVOYÉE

       S'il  réussit,  openat()  renvoie  un  nouveau descripteur de fichier. En cas d'erreur, il
       renvoie -1 et errno contient le code d'erreur.

ERREURS

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

       EBADF  dirfd n'est pas un descripteur de fichier valable.

       ENOTDIR
              pathname  est relatif, et le descripteur de fichier dirfd est associé à un fichier,
              pas à un répertoire.

VERSIONS

       openat() est apparu dans Linux 2.6.16.

CONFORMITÉ

       POSIX.1-2008. Un appel système similaire existe sur Solaris.

NOTES

       openat() et certains autres appels système avec un suffixe « at » sont fournis  pour  deux
       raisons.

       Tout d'abord, openat() permet à une application d'éviter les problèmes d'accès concurrents
       lors de l'utilisation de open(2) pour ouvrir des fichiers dans des répertoires autres  que
       le  répertoire  courant.  Ces problèmes sont dus au fait que l'un des composants du chemin
       donné à open(2) peut être modifié parallèlement  à  l'appel  open(2).  De  tels  problèmes
       peuvent  être évités en ouvrant un descripteur de fichier sur le répertoire cible, puis en
       fournissant ce descripteur comme argument dirfd de openat().

       Enfin, openat() permet d'implémenter un « répertoire courant » par  thread,  grâce  à  des
       descripteurs  de  fichier maintenus par l'application. Cette fonctionnalité peut également
       être obtenue en jouant avec /proc/self/fd/dirfd, mais de façon moins efficace.

VOIR AUSSI

       faccessat(2), fchmodat(2), fchownat(2), fstatat(2), futimesat(2),  linkat(2),  mkdirat(2),
       mknodat(2),  open(2), readlinkat(2), renameat(2), symlinkat(2), unlinkat(2), utimensat(2),
       mkfifoat(3), path_resolution(7)

COLOPHON

       Cette page fait partie de la publication 3.32 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://perkamon.alioth.debian.org/>.

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