SETBUF(3)          Manuel du programmeur Linux          SETBUF(3)


NOM
       setbuf,  setbuffer,  setlinebuf,  setvbuf  -  Agir sur les
       buffers d'un flux.

SYNOPSIS
       #include <stdio.h>

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

DESCRIPTION
       Les trois types de buffers disponibles sont les suivants :
       pas de buffers, buffers de blocs, et buffers de lignes.

       Quand un flux de sortie n'a pas  de  buffer,  les  données
       apparaissent dans le fichier destination, ou sur le termi­
       nal, dès qu'elles sont écrites.

       Avec les buffers  par  blocs,  une  certaine  quantité  de
       données  est  conservée  avant  d'être  écrite en tant que
       bloc.

       Avec les buffers 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  (typ­
       iquement 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 buffers de
       blocs. Quand une  première  opération  d'entrée/sortie  se
       déroule sur un fichier, malloc(3) est appelé, et un buffer
       est créé. Si le flux se rapporte à un terminal (comme std­
       out  habituellement)  il  s'agit d'un buffer de ligne.  Le
       flux standard de sortie  d'erreur  stderr  n'a  jamais  de
       buffer par défaut.

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

              _IONBF pas de buffer

              _IOLBF buffer de ligne

              _IOFBF buffer complet

       A l'exception des fichiers sans  buffers,  l'argument  buf
       doit pointer sur un buffer contenant au moins size octets.
       Ce nouveau buffer sera utilisé à la place de l'ancien.  Si



BSD                      7 Novembre 1996                        1





SETBUF(3)          Manuel du programmeur Linux          SETBUF(3)


       l'argument buf est NULL, seul le mode est affecté. Un nou­
       veau  buffer  sera  alloué  automatiquement  lors  de   la
       prochaine opération de lecture ou d'écriture.  La fonction
       setvbuf peut être utilisée à tout  moment,  mais  ne  peut
       changer  le  mode  que lorsque l'eventuel buffer précédent
       est inactif : avant la première opération d'entrée/sortie,
       ou immédiatement après un appel à fflush.

       Les  3  autres  appels sont, en fait, simplement des alias
       pour l'appel de setvbuf.  la fonction setbuf  est  exacte­
       ment équivalente à

              setvbuf(stream,  buf,  buf  ? _IOFBF : _IONBF, BUF­
              SIZ);

       La fonction setbuffer est identique, sauf que la taille du
       buffer  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);

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

CONFORMITÉ
       Les fonctions setbuf et  setvbuf  sont  conformes  à  ANSI
       C3.159-1989 (``ANSI C'').

BUGS
       Les  fonctions  setbuffer et setlinebuf ne sont pas porta­
       bles  sur  les  systèmes  BSD  antérieurs  à  4.2BSD,   et
       peut-être  indisponibles  sous  Linux.   Sur  les systèmes
       4.2BSD et 4.3BSD, setbuf utilise toujours  une  taille  de
       buffer non-optimale, et doit être évitée.

       Il faut toujours s'assurer que buf et son contenu existent
       encore au moment de la fermeture du flux (qui  se  produit
       automatiquement à la fin du programme).

       Par exemple, ceci est INCORRECT :

       #include <stdio.h>

       int
       main (void)
       {
           char   buf [BUFSIZ];

           setbuf (stdin, buf);
           printf ("Hello, world!\n");
           return (0);
       }



BSD                      7 Novembre 1996                        2





SETBUF(3)          Manuel du programmeur Linux          SETBUF(3)


TRADUCTION
       Christophe Blaess, 1997.























































BSD                      7 Novembre 1996                        3