Provided by: manpages-fr-dev_4.15.0-9_all bug

NOM

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

SYNOPSIS

       #include <stdio.h>

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

       void setbuf(FILE *restrict stream, char *restrict buf);
       void setbuffer(FILE *restrict stream, char *restrict buf,
                   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 version 2.19 de la glibc :
               _DEFAULT_SOURCE
           Versions 2.19 et antérieures de la glibc :
               _BSD_SOURCE

DESCRIPTION

       The three types of buffering available are unbuffered, block buffered, and line  buffered.
       When  an  output  stream  is  unbuffered,  information  appears on the destination file or
       terminal as soon as written; when it is block buffered, many characters are saved  up  and
       written  as  a block; when it is line buffered, characters are saved up until a newline is
       output or input is read from any stream attached to a terminal device  (typically  stdin).
       The function fflush(3)  may be used to force the block out early. (See fclose(3).)

       Normally  all  files  are  block  buffered.  If  a  stream refers to a terminal (as stdout
       normally does), it is line buffered. The standard error stream stderr is always unbuffered
       by default.

       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 │
       └────────────────────────────────────────────────────────┴──────────────────────┴─────────┘

CONFORMITÉ

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

NOTES

       POSIX  notes  that the value of errno is unspecified after a call to setbuf()  and further
       notes that, since the value of errno is not required to be unchanged  after  a  successful
       call to setbuf(), applications should instead use setvbuf()  in order to detect errors.

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)

COLOPHON

       Cette  page  fait partie de la publication 5.13 du projet man-pages Linux. Une description
       du projet et des instructions pour signaler des anomalies et la dernière version de  cette
       page peuvent être trouvées à l'adresse https://www.kernel.org/doc/man-pages/.

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>  et  Frédéric  Hantrais
       <fhantrais@gmail.com>

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