Provided by: manpages-fr-dev_3.65d1p1-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.

ATTRIBUTS

   Multithreading (voir pthreads(7))
       Les fonctions setbuf(), setbuffer(), setlinebuf() et setvbuf() sont sûres dans un contexte
       multithread.

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.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). 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> ».