Provided by: manpages-fr-dev_2.80.1-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 pour les macros de test de fonctionnalité de 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, (char *) NULL, _IOLBF, 0);

VALEUR RENVOYÉE

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

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