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