Provided by: manpages-fr-dev_3.57d1p1-1_all bug

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   (consultez
   feature_test_macros(7)) :

       setbuffer(), setlinebuf() : _BSD_SOURCE

DESCRIPTION

       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, 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.57 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).  Nicolas  François  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> ».