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