Provided by: manpages-fr-dev_4.26.0-1_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

       setbuf()
       setvbuf()
              C11, POSIX.1-2008.

HISTORIQUE

       setbuf()
       setvbuf()
              C89, POSIX.1-2001.

AVERTISSEMENTS

       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("Hello, world!\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 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.

Pages du manuel de Linux 6.9.1                    15 juin 2024                                         setbuf(3)