Loading

NOM

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

SYNOPSIS

       #define _ATFILE_SOURCE
       #include <fcntl.h>

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

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

       Cette  page  de  manuel  a  été  traduite et mise à jour par Christophe
       Blaess <http://www.blaess.fr/christophe/> entre 1996 et 2003, puis  par
       Alain  Portal  <aportal AT univ-montp2 DOT fr> jusqu’en 2006, et mise à
       disposition sur http://manpagesfr.free.fr/.

       Les mises à jour et corrections de la version présente dans Debian sont
       directement gérées par Julien Cristau <jcristau@debian.org> et l’équipe
       francophone de traduction de Debian.

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