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

Linux                                              4 mai 2012                                          OPENAT(2)