Provided by: manpages-fr-dev_3.27fr1.4-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 fonctionnalites 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  donnees  apparaissent  dans  le  fichier
       destination,  ou  sur  le terminal, des qu'elles sont ecrites. Avec les
       tampons par blocs, une certaine quantite de donnees est conservee avant
       d'etre  ecrite  en  tant  que  bloc.  Avec  les  tampons de lignes, les
       caracteres sont conserves jusqu'a ce qu'un saut de ligne soit transmis,
       ou  que  l'on  reclame  une  lecture  sur  un  flux attache au terminal
       (typiquement stdin). La fonction  fflush(3)  peut  etre  utilisee  pour
       forcer   l'ecriture   a   n'importe   quel   moment  (voir  fclose(3)).
       Normalement, tous les fichiers utilisent des tampons  de  blocs.  Quand
       une  premiere  operation  d'entree-sortie  se  deroule  sur un fichier,
       malloc(3) est appelee, et un tampon est cree. Si le flux se rapporte  a
       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 defaut.

       La fonction setvbuf() peut etre utilisee sur n'importe quel flux ouvert
       pour modifier son type de tampon. La parametre mode doit correspondre a
       l'une des constantes symboliques suivantes :

              _IONBF pas de tampon

              _IOLBF tampon de ligne

              _IOFBF tampon complet

       A  l'exception  des  fichiers sans tampons, l'argument buf doit pointer
       sur un tampon contenant au moins size octets. Ce  nouveau  tampon  sera
       utilise  a  la  place  de l'ancien. Si l'argument buf est NULL, seul le
       mode est affecte. Un nouveau tampon sera alloue automatiquement lors de
       la  prochaine operation de lecture ou d'ecriture. La fonction setvbuf()
       ne peut etre utilisee qu'apres l'ouverture  du  flux,  et  avant  toute
       operation dessus.

       Les  trois  autres  appels  sont,  en  fait,  simplement des alias pour
       l'appel de setvbuf(). la fonction setbuf() est exactement equivalente a

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

       La fonction setbuffer() est identique, sauf que la taille du tampon est
       indiquee  par  l'appelant  plutot  que  la valeur par defaut BUFSIZ. La
       fonction setlinebuf() est exactement equivalente a :

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

VALEUR RENVOY'EE

       La fonction setvbuf() renvoie zero si elle reussit.  Elle  renvoie  une
       valeur  non  nulle en cas d'echec (mode n'est pas valable ou la requete
       ne peut pas etre honoree). Elle peut remplir errno en cas d'erreur. Les
       autres fonctions ne renvoient rien.

       Les autres fonctions ne renvoient pas de valeur.

CONFORMIT'E

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

BOGUES

       Les fonctions setbuffer() et setlinebuf() ne sont pas portables sur les
       systemes BSD anterieurs a  BSD 4.2,  et  sont  disponibles  sous  Linux
       depuis  la  libc  4.5.21. Sur les systemes BSD 4.2 et BSD 4.3, setbuf()
       utilise toujours une taille  de  tampon  non  optimale,  et  doit  etre
       evitee.

       Il  faut  toujours  s'assurer  que  le  contenu de buf existe encore au
       moment de la fermeture du flux stream (qui se produit automatiquement a
       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.27 du projet man-pages
       Linux. Une description du projet et des instructions pour signaler  des
       anomalies       peuvent       etre       trouvees      a      l'adresse
       <URL:http://www.kernel.org/doc/man-pages/>.

TRADUCTION

       Depuis 2010, cette traduction est maintenue a l'aide  de  l'outil  po4a
       <URL:http://po4a.alioth.debian.org/>   par   l'equipe   de   traduction
       francophone       au       sein        du        projet        perkamon
       <URL:http://perkamon.alioth.debian.org/>.

       Christophe  Blaess  <URL:http://www.blaess.fr/christophe/> (1996-2003),
       Alain  Portal  <URL:http://manpagesfr.free.fr/>  (2003-2006).   Nicolas
       Francois et l'equipe francophone de traduction de Debian (2006-2009).

       Veuillez   signaler   toute   erreur   de   traduction  en  ecrivant  a
       <debian-l10n-french@lists.debian.org> ou par un rapport de bogue sur le
       paquet manpages-fr.

       Vous  pouvez  toujours avoir acces a la version anglaise de ce document
       en utilisant la commande << man -L C <section> <page_de_man> >>.