Provided by: manpages-fr-dev_4.19.0-7_all bug

NOM

       setbuf, setbuffer, setlinebuf, setvbuf - Agir sur les tampons d'un flux

BIBLIOTHÈQUE

       Bibliothèque C standard (libc, -lc)

SYNOPSIS

       #include <stdio.h>

       int setvbuf(FILE *restrict stream, char buf[restrict .size],
                   int mode, size_t size);

       void setbuf(FILE *restrict stream, char *restrict buf);
       void setbuffer(FILE *restrict stream, char buf[restrict .size],
                   size_t size);
       void setlinebuf(FILE *stream);

   Exigences    de    macros    de   test   de   fonctionnalités   pour   la   glibc   (consulter
   feature_test_macros(7)) :

       setbuffer(), setlinebuf() :
           Depuis la glibc 2.19 :
               _DEFAULT_SOURCE
           glibc 2.19 et antérieures :
               _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. 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

       Pour une explication des termes utilisés dans cette section, consulter attributes(7).

       ┌────────────────────────────────────────────────────────┬──────────────────────┬─────────┐
       │InterfaceAttributValeur  │
       ├────────────────────────────────────────────────────────┼──────────────────────┼─────────┤
       │setbuf(), setbuffer(), setlinebuf(), setvbuf()          │ Sécurité des threads │ MT-Safe │
       └────────────────────────────────────────────────────────┴──────────────────────┴─────────┘

STANDARDS

       Les fonctions setbuf() et setvbuf() sont conformes à C99.

NOTES

       POSIX  remarque  que la valeur de errno est indéterminée après un appel à setbuf() et note
       plus loin que dans la mesure où la valeur de errno n'est pas obligée  de  rester  la  même
       après un appel réussi à setbuf(), les applications devraient utiliser setvbuf() à la place
       afin de détecter les erreurs.

BOGUES

       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(stdout, buf);
           printf("Bonjour le monde !\n");
           return 0;
       }

VOIR AUSSI

       stdbuf(1), fclose(3), fflush(3), fopen(3), fread(3), malloc(3), printf(3), puts(3)

TRADUCTION

       La traduction française de cette  page  de  manuel  a  été  créée  par  Christophe  Blaess
       <https://www.blaess.fr/christophe/>,  Stéphan  Rafin  <stephan.rafin@laposte.net>, Thierry
       Vignaud <tvignaud@mandriva.com>, François Micaux, Alain  Portal  <aportal@univ-montp2.fr>,
       Jean-Philippe    Guérard   <fevrier@tigreraye.org>,   Jean-Luc   Coulon   (f5ibh)   <jean-
       luc.coulon@wanadoo.fr>,   Julien    Cristau    <jcristau@debian.org>,    Thomas    Huriaux
       <thomas.huriaux@gmail.com>, Nicolas François <nicolas.francois@centraliens.net>, Florentin
       Duneau <fduneau@gmail.com>, Simon Paillard <simon.paillard@resel.enst-bretagne.fr>,  Denis
       Barbier   <barbier@debian.org>,   David   Prévot  <david@tilapin.org>,  Frédéric  Hantrais
       <fhantrais@gmail.com> et Jean-Pierre Giraud <jean-pierregiraud@neuf.fr>

       Cette traduction est une documentation libre ; veuillez vous reporter  à  la  GNU  General
       Public   License   version 3  ⟨https://www.gnu.org/licenses/gpl-3.0.html⟩  concernant  les
       conditions de copie et de distribution. Il n'y a aucune RESPONSABILITÉ LÉGALE.

       Si vous découvrez un bogue dans la traduction de cette page de manuel, veuillez envoyer un
       message à ⟨debian-l10n-french@lists.debian.org⟩.