Provided by: manpages-fr-dev_3.65d1p1-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   fonctionnalités   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  chaîne  pointée  par
       path et lui associe un flux.

       L'argument  mode  pointe  vers  une  chaîne  commençant  par l'une des séquences suivantes
       (éventuellement suivie par des caractères supplémentaires, conformément à  la  description
       ci-dessous).

       r      Ouvre le fichier en lecture. Le pointeur de flux est placé au début du fichier.

       r+     Ouvre  le fichier en lecture et écriture. Le pointeur de flux est placé au début du
              fichier.

       w      Tronque le fichier à son début ou ouvre le fichier en écriture. Le pointeur de flux
              est placé au début du fichier.

       w+     Ouvre  le  fichier en lecture et écriture. Le fichier est créé s'il n'existait pas.
              S'il existait déjà, sa longueur est ramenée à 0. Le pointeur de flux est  placé  au
              début du fichier.

       a      Ouvre  le fichier en ajout (écriture à la fin du fichier). Le fichier est créé s'il
              n'existait pas. Le pointeur de flux est placé à la fin du fichier.

       a+     Ouvre le fichier en lecture et ajout (écriture en fin de fichier). Le  fichier  est
              créé  s'il  n'existait  pas. La position initiale du fichier pour la lecture est en
              début de fichier, mais les ajouts sont toujours placés à la fin du fichier.

       La chaîne mode peut également inclure la lettre « b » comme  dernier  caractère,  ou  même
       entre  les deux caractères d'une des séquences à 2 caractères vues ci-dessus. Ce mode sert
       uniquement à assurer la compatibilité avec C89 et n'a aucun effet. Le « b » est ignoré sur
       tous  les  systèmes  compatibles POSIX, y compris Linux (d'autres systèmes peuvent traiter
       les fichiers textes et les fichiers binaires différemment, et l'ajout du « b »  peut  être
       une  bonne  idée  si  vous  faites des entrées/sorties sur un fichier binaire et que votre
       programme risque d'être porté sur un environnement non UNIX).

       Consultez la section NOTES ci-dessous pour le détails des  extensions  de  la  glibc  pour
       mode.

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

       Les lectures et les écritures peuvent être mélangées sur les flux en lecture et  écriture,
       dans  un  ordre  quelconque. Notez que AINSI C nécessite qu'une fonction de positionnement
       dans le fichier soit appelée entre une lecture et une écriture, à moins que l'opération de
       lecture  atteigne  la  fin  du  fichier(si cette condition n'est pas rencontrée, alors une
       lecture est permise pour renvoyer le résultat d'une écriture autre que la  dernière).  Une
       bonne  habitude  (souvent nécessaire sous Linux) consiste donc à intercaler un fseek(3) ou
       fgetpos(3) entre les lectures et les écritures sur le même flux.  Ces  opérations  peuvent
       être  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 caractère dans le  mode)  feront  agir
       toutes  les  opérations  d'écriture à la fin du flux, comme si elles étaient précédées par
       l'appel :

           fseek(stream, 0, SEEK_END);

       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 être
       compatible avec celui du descripteur de fichier. L'indicateur de position du nouveau  flux
       prend  la  même  valeur  que celui de fd, et les indicateurs d'erreur et de fin de fichier
       sont effacés. Les modes « w » et « w+ » ne tronquent pas le fichier. Le descripteur  n'est
       pas  dupliqué,  et  sera  fermé  lorsque  le flux créé par fdopen() sera fermé. L'appel de
       fdopen() sur un objet en mémoire partagée est indéfini.

       La fonction freopen() ouvre le fichier dont le nom se trouve dans la chaîne de  caractères
       pointée  par path et lui associe le flux pointé par stream. Le flux original, s'il existe,
       est fermé. L'argument mode est  utilisé  exactement  comme  avec  fopen().  La  principale
       utilisation  de  freopen()  est  de modifier le fichier associé aux flux standard de texte
       (stderr, stdin, ou stdout).

VALEUR RENVOYÉE

       Si elles réussissent intégralement, 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 à fopen(), fdopen(), ou freopen() était invalide.

       Les  fonctions  fopen(),  fdopen()  et freopen() peuvent également échouer et définir dans
       errno une des erreurs spécifiées par malloc(3).

       La fonction fopen() peut aussi échouer et définir dans errno une  des  erreurs  spécifiées
       par open(2).

       La  fonction  fdopen() peut aussi échouer et définir dans errno une des erreurs spécifiées
       par fcntl(2).

       La fonction freopen() peut aussi échouer et définir dans errno une des erreurs  spécifiées
       par open(2), fclose(3) et fflush(3).

CONFORMITÉ

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

NOTES

   Notes sur la glibc
       La bibliothèque GNU C permet les extensions suivantes pour la chaîne spécifiée par mode :

       c (depuis la glibc 2.3.3)
              Ne pas faire de l'opération d'ouverture, ou des opérations de lectures et écritures
              ultérieures,  des  points  d'annulation  de  thread.  Cet  attribut est ignoré pour
              fdopen().

       e (depuis la glibc 2.7)
              Ouvrir le fichier avec l'attribut O_CLOEXEC. Consultez open(2) pour de plus  amples
              renseignements. Cet attribut est ignoré pour fdopen().

       m (depuis la glibc 2.3)
              Essayer   d'accéder   au   fichier   avec  mmap(2),  au  lieu  des  appels  système
              d'entrées/sorties (read(2), write(2)). Actuellement, l'utilisation de mmap(2) n'est
              seulement tentée que pour un fichier ouvert en lecture.

       x      Ouvrir  le  fichier de manière exclusive (comme avec l'attribut O_EXCL de open(2)).
              Si le fichier existe déjà, fopen() échoue  et  errno  est  définie  à  EEXIST.  Cet
              attribut est ignoré par fdopen().

       En plus des caractères supplémentaires, fopen() et freopen() acceptent la syntaxe suivante
       dans mode :

        ,ccs=chaîne

       La chaîne donnée est considérée comme le nom d'un jeu de caractères codés et le  flux  est
       marqué   orienté   caractères  larges.  Ensuite,  les  fonctions  internes  de  conversion
       convertissent les E/S  depuis  et  vers  le  jeu  de  caractères  chaîne.  Si  la  syntaxe
       ,ccs=chaîne  n'est  pas  indiquée,  alors  l'orientation  caractères  larges  du  flux est
       déterminée par le premier fichier de l'opération. S'il s'agit une opération de  caractères
       larges,  le flux est marqué orienté caractères larges et les fonctions pour convertir vers
       le jeu de caractères codés sont chargées.

BOGUES

       Lors de l'analyse des  caractères  d'attribut  individuels  dans  mode  (c'est-à-dire  les
       caractères précédant l'indication « ccs »), l'implémentation glibc de fopen() et freopen()
       limite le nombre de caractères examinés dans mode à 7 (ou, dans les versions de  la  glibc
       antérieures  à  2.14,  à  6,  ce  qui  n'était  pas  suffisant  pour inclure d'éventuelles
       spécifications comme « rb+cmxe »). L'implémentation actuelle de fdopen() analyse  au  plus
       5 caractères de mode.

VOIR AUSSI

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

COLOPHON

       Cette  page  fait partie de la publication 3.65 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). Florentin  Duneau  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> ».