Provided by: manpages-fr-dev_3.57d1p1-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() 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. 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.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/>.

       Christophe    Blaess    <http://www.blaess.fr/christophe/>   (1996-2003),   Alain   Portal
       <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> ».