Provided by:
manpages-fr-dev_3.32d0.2p4-1_all 
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.32 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> >>.