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