Loading

NOM

       setbuf,  setbuffer,  setlinebuf,  setvbuf  -  Agir sur les tampons d’un
       flux.

SYNOPSIS

       #include <stdio.h>

       void setbuf(FILE *stream, char *buf);

       void setbuffer(FILE *stream, char *buf, size_t size);

       void setlinebuf(FILE *stream);

       int setvbuf(FILE *stream, char *buf, int mode, size_t size);

   Exigences de  macros  de  test  de  fonctionnalités  pour  la  glibc  (voir
   feature_test_macros(7)) :

       setbuffer(), setlinebuf() : _BSD_SOURCE

       Les  trois  types  de  tampons  disponibles  sont les suivants : pas de
       tampons, tampons de blocs, et tampons  de  lignes.  Quand  un  flux  de
       sortie  n’a  pas  de  tampon,  les données apparaissent dans le fichier
       destination, ou sur le terminal, dès qu’elles sont  écrites.  Avec  les
       tampons par blocs, une certaine quantité de données est conservée avant
       d’être écrite en tant  que  bloc.  Avec  les  tampons  de  lignes,  les
       caractères sont conservés jusqu’à ce qu’un saut de ligne soit transmis,
       ou que l’on réclame  une  lecture  sur  un  flux  attaché  au  terminal
       (typiquement  stdin).  La  fonction  fflush(3)  peut être utilisée pour
       forcer  l’écriture  à   n’importe   quel   moment   (voir   fclose(3)).
       Normalement,  tous  les  fichiers utilisent des tampons de blocs. Quand
       une première opération  d’entrée-sortie  se  déroule  sur  un  fichier,
       malloc(3)  est appelée, et un tampon est créé. Si le flux se rapporte à
       un terminal (comme stdout habituellement)  il  s’agit  d’un  tampon  de
       ligne.  Le flux standard de sortie d’erreur stderr n’a jamais de tampon
       par défaut.

       La fonction setvbuf() peut être utilisée sur n’importe quel flux ouvert
       pour modifier son type de tampon. La paramètre mode doit correspondre à
       l’une des constantes symboliques suivantes :

              _IONBF pas de tampon

              _IOLBF tampon de ligne

              _IOFBF tampon complet

       À l’exception des fichiers sans tampons, l’argument  buf  doit  pointer
       sur  un  tampon  contenant au moins size octets. Ce nouveau tampon sera
       utilisé à la place de l’ancien. Si l’argument buf  est  NULL,  seul  le
       mode est affecté. Un nouveau tampon sera alloué automatiquement lors de
       la prochaine opération de lecture ou d’écriture. La fonction  setvbuf()
       ne  peut  être  utilisée  qu’après  l’ouverture du flux, et avant toute
       opération dessus.

       Les trois autres appels  sont,  en  fait,  simplement  des  alias  pour
       l’appel de setvbuf(). la fonction setbuf() est exactement équivalente à

           setvbuf(stream, buf, buf ? _IOFBF : _IONBF, BUFSIZ);

       La fonction setbuffer() est identique, sauf que la taille du tampon est
       indiquée  par  l’appelant  plutôt  que  la valeur par défaut BUFSIZ. La
       fonction setlinebuf() est exactement équivalente à :

           setvbuf(stream, (char *) NULL, _IOLBF, 0);

VALEUR RENVOYÉE

       La fonction setvbuf() renvoie zéro si elle réussit.  Elle  renvoie  une
       valeur  non  nulle en cas d’échec (mode n’est pas valable ou la requête
       ne peut pas être honorée). Elle peut remplir errno en cas d’erreur. Les
       autres fonctions ne renvoient rien.

       Les autres fonctions ne renvoient pas de valeur.

CONFORMITÉ

       Les fonctions setbuf() et setvbuf() sont conformes à C89 et C99.

BOGUES

       Les fonctions setbuffer() et setlinebuf() ne sont pas portables sur les
       systèmes BSD antérieurs à  BSD 4.2,  et  sont  disponibles  sous  Linux
       depuis  la  libc  4.5.21. Sur les systèmes BSD 4.2 et BSD 4.3, setbuf()
       utilise toujours une taille  de  tampon  non  optimale,  et  doit  être
       évitée.

       Il  faut  toujours  s’assurer  que  le  contenu de buf existe encore au
       moment de la fermeture du flux stream (qui se produit automatiquement à
       la fin du programme). Par exemple, ceci n’est pas valable :

       #include <stdio.h>

       int
       main(void)
       {
           char buf[BUFSIZ];
           setbuf(stdin, buf);
           printf("Hello, world!\n");
           return 0;
       }

VOIR AUSSI

       fclose(3), fflush(3), fopen(3), fread(3), malloc(3), printf(3), puts(3)

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         Nicolas         François
       <nicolas.francois@centraliens.net>   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> ».