Provided by: manpages-fr-dev_2.64.1-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 fildes, const char *mode);
       FILE *freopen(const char *path, const char *mode, FILE *stream);

   Feature Test Macro Requirements for glibc (see feature_test_macros(7)):

       fdopen(): _POSIX_C_SOURCE || _XOPEN_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 (d’autres caractères peuvent suivre la séquence) :

       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.

       The  mode  string  can  also  include  the  letter ’b’ either as a last
       character or as a character  between  the  characters  in  any  of  the
       two-character   strings   described   above.    This  is  strictly  for
       compatibility with C89 and has no effect; the ’b’  is  ignored  on  all
       POSIX  conforming  systems,  including Linux.  (Other systems may treat
       text files and binary files differently, and adding the ’b’  may  be  a
       good  idea  if you do I/O to a binary file and expect that your program
       may be ported to non-Unix environments.)

       Any        created         files         will         have         mode
       S_IRUSR|S_IWUSR|S_IRGRP|S_IWGRP|S_IROTH|S_IWOTH  (0666), as modified by
       the process’s umask value (see 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 un appel
              fseek(stream,0,SEEK_END);
       systématique.

       La fonction fdopen() associe un flux avec  un  descripteur  de  fichier
       fildes  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 fildes, 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

       S’il réussissent intégralement fopen(), fdopen() et freopen() renvoient
       un pointeur sur un fichier, de type FILE. Sinon, ils 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 à propos de 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 rendre  l’opération  d’ouverture  ou  les  opérations  de
              lectures  et  écritures  ultérieures, des points d’annulation de
              thread.

       m (depuis la glibc 2.3)
              Essayer d’accéder au fichier avec mmap(2), au  lieu  des  appels
              systèmes  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 le drapeau
              O_EXCL de open(2)). Si le fichier existe déjà, fopen() échoue et
              errno  est définie à EEXIST. Ce drapeau est ignoré par fdopen().

VOIR AUSSI

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

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 Florentin Duneau <fduneau@gmail.com> 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> ».