Provided by: manpages-fr-dev_3.27fr1.4-1_all bug

NOM

       fopen, fdopen, freopen - Fonctions d'ouverture de flux

SYNOPSIS

       #include <stdio.h>

       FILE *fopen(const char *path, const char *mode);

       FILE *fdopen(int fd, const char *mode);

       FILE *freopen(const char *path, const char *mode, FILE *stream);

   Exigences  de  macros  de  test de fonctionnalites pour la glibc (consultez
   feature_test_macros(7)) :

       fdopen() : _POSIX_C_SOURCE >= 1 || _XOPEN_SOURCE || _POSIX_SOURCE

DESCRIPTION

       La fonction fopen() ouvre le fichier dont le nom est  contenu  dans  la
       chaine pointee par path et lui associe un flux.

       L'argument  mode  pointe  vers  une  chaine  commencant  par  l'une des
       sequences suivantes (d'autres caracteres peuvent suivre la sequence) :

       r      Ouvre le fichier en lecture. Le pointeur de flux  est  place  au
              debut du fichier.

       r+     Ouvre le fichier en lecture et ecriture. Le pointeur de flux est
              place au debut du fichier.

       w      Tronque le fichier a son debut ou ouvre le fichier en  ecriture.
              Le pointeur de flux est place au debut du fichier.

       w+     Ouvre  le  fichier  en  lecture et ecriture. Le fichier est cree
              s'il n'existait pas. S'il existait deja, sa longueur est ramenee
              a 0. Le pointeur de flux est place au debut du fichier.

       a      Ouvre  le  fichier  en  ajout (ecriture a la fin du fichier). Le
              fichier est cree s'il n'existait pas. Le pointeur  de  flux  est
              place a la fin du fichier.

       a+     Ouvre  le  fichier  en  lecture  et  ajout  (ecriture  en fin de
              fichier). Le fichier est cree s'il n'existait pas.  La  position
              initiale  du  fichier  pour  la lecture est en debut de fichier,
              mais les ajouts sont toujours places a la fin du fichier.

       La chaine mode peut egalement inclure la lettre << b >>  comme  dernier
       caractere,  ou  meme  entre les deux caracteres d'une des sequences a 2
       caracteres vues  ci-dessus.  Ce  mode  sert  uniquement  a  assurer  la
       compatibilite  avec  C89  et n'a aucun effet. Le << b >> est ignore sur
       tous les systemes compatibles POSIX, y compris Linux (d'autres systemes
       peuvent   traiter   les   fichiers  textes  et  les  fichiers  binaires
       differemment, et l'ajout du << b >> peut etre une bonne  idee  si  vous
       faites  des  entrees/sorties  sur  un  fichier  binaire  et  que  votre
       programme risque d'etre porte sur un environnement non Unix).

       Consultez la section NOTES ci-dessous pour le details des extensions de
       la glibc pour mode.

       Tout  fichier cree aura le mode S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP |
       S_IROTH | S_IWOTH (0666),  qui  sera  ensuite  modifie  par  la  valeur
       d'umask du processus. Consultez umask(2).

       Les  lectures  et  les ecritures peuvent etre melangees sur les flux en
       lecture et ecriture, dans  un  ordre  quelconque.  Notez  que  AINSI  C
       necessite  qu'une  fonction  de  positionnement  dans  le  fichier soit
       appelee entre une lecture et une ecriture, a moins que  l'operation  de
       lecture  atteigne  la  fin  du  fichier(si  cette  condition  n'est pas
       rencontree, alors une lecture est permise  pour  renvoyer  le  resultat
       d'une  ecriture  autre  que  la  derniere). Une bonne habitude (souvent
       necessaire sous Linux)  consiste  donc  a  intercaler  un  fseek(3)  ou
       fgetpos(3)  entre  les  lectures et les ecritures sur le meme flux. Ces
       operations peuvent etre visiblement sans  effet  comme  fseek(...,  0L,
       SEEK_CUR) et ne servant que pour l'effet de bord de synchronisation.

       Ouvrir  un  fichier en mode ajout (a comme le premier caractere dans le
       mode) feront agir toutes les operations d'ecriture a la  fin  du  flux,
       comme si elles etaient precedees par un appel

           fseek(stream,0,SEEK_END);

       systematique.

       La  fonction fdopen() associe un flux avec un descripteur de fichier fd
       existant. Le  mode  du  flux  (une  des  valeurs,  << r >>,  << "r+ >>,
       << w >>,  << w+ >>,  << a >>,  ou  << a+ >>)  doit etre compatible avec
       celui du descripteur de fichier. L'indicateur de  position  du  nouveau
       flux  prend la meme valeur que celui de fd, et les indicateurs d'erreur
       et de fin de fichier sont effaces. Les modes  << w >>  et  << w+ >>  ne
       tronquent  pas  le  fichier. Le descripteur n'est pas duplique, et sera
       ferme lorsque le flux cree par fdopen() sera ferme. L'appel de fdopen()
       sur un objet en memoire partagee est indefini.

       La  fonction  freopen()  ouvre le fichier dont le nom se trouve dans la
       chaine de caracteres pointee par path et lui associe le flux pointe par
       stream.  Le  flux original, s'il existe, est ferme. L'argument mode est
       utilise exactement comme avec fopen().  La  principale  utilisation  de
       freopen() est de modifier le fichier associe aux flux standard de texte
       (stderr, stdin, ou stdout).

VALEUR RENVOY'EE

       Si elles reussissent  integralement,  fopen(),  fdopen()  et  freopen()
       renvoient  un  pointeur  de  type  FILE. Sinon, elles renvoient NULL et
       errno contient le code d'erreur.

ERREURS

       EINVAL Le mode fourni a fopen(), fdopen(), ou freopen() etait invalide.

       Les fonctions fopen(), fdopen() et freopen() peuvent egalement  echouer
       et definir dans errno une des erreurs specifiees par malloc(3).

       La  fonction  fopen()  peut aussi echouer et definir dans errno une des
       erreurs specifiees par open(2).

       La fonction fdopen() peut aussi echouer et definir dans errno  une  des
       erreurs specifiees par fcntl(2).

       La  fonction freopen() peut aussi echouer et definir dans errno une des
       erreurs specifiees par open(2), fclose(3) et fflush(3).

CONFORMIT'E

       Les fonctions fopen() et freopen() sont conformes a  C89.  La  fonction
       fdopen() est conforme a POSIX.1-1990.

NOTES

   Notes sur la glibc
       La  bibliotheque  GNU  C permet les extensions suivantes pour la chaine
       specifiee par mode :

       c (depuis la glibc 2.3.3)
              Ne pas rendre  l'operation  d'ouverture  ou  les  operations  de
              lectures  et  ecritures  ulterieures, des points d'annulation de
              thread.

       e (depuis la glibc 2.7)
              Ouvrir le fichier avec l'attribut O_CLOEXEC.  Consultez  open(2)
              pour plus d'informations.

       m (depuis la glibc 2.3)
              Essayer  d'acceder  au  fichier avec mmap(2), au lieu des appels
              systeme  d'entrees/sorties  (read(2),  write(2)).  Actuellement,
              l'utilisation  de  mmap(2)  n'est  seulement  tentee que pour un
              fichier ouvert en lecture.

       x      Ouvrir le fichier de maniere exclusive (comme  avec  le  drapeau
              O_EXCL de open(2)). Si le fichier existe deja, fopen() echoue et
              errno est definie a EEXIST. Ce drapeau est ignore par fdopen().

VOIR AUSSI

       open(2), fclose(3), fileno(3), fmemopen(3), fopencookie(3)

COLOPHON

       Cette page fait partie de  la  publication  3.27  du  projet  man-pages
       Linux.  Une description du projet et des instructions pour signaler des
       anomalies      peuvent      etre       trouvees       a       l'adresse
       <URL:http://www.kernel.org/doc/man-pages/>.

TRADUCTION

       Depuis  2010,  cette  traduction est maintenue a l'aide de l'outil po4a
       <URL:http://po4a.alioth.debian.org/>   par   l'equipe   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).  Florentin
       Duneau et l'equipe francophone de traduction de Debian (2006-2009).

       Veuillez  signaler  toute  erreur   de   traduction   en   ecrivant   a
       <debian-l10n-french@lists.debian.org> ou par un rapport de bogue sur le
       paquet manpages-fr.

       Vous pouvez toujours avoir acces a la version anglaise de  ce  document
       en utilisant la commande << man -L C <section> <page_de_man> >>.

GNU                             23 fevrier 2009                       FOPEN(3)