SETVBUF |
Fixer la virtualisation du tampon |
---|---|
Langage C | stdio.h |
Syntaxe
int setvbuf(FILE *ptrfichier,char *tampon,int mode,size_t taille); |
Paramètres
Nom | Description | |
---|---|---|
ptrfichier | Ce paramètre permet d'indiquer l'identificateur de fichier | |
tampon | Ce paramètre permet d'indiquer le tampon de données | |
mode | Ce paramètre permet d'indiquer le mode : | |
Constante | Description | |
_IONBF | Pas de tampon | |
_IOLBF | Ligne de tampon | |
_IOFBF | Tampon complet | |
taille | Ce paramètre permet d'indiquer la taille du tampon |
Description
Cette fonction permet de créer un tampon de fichier.
Algorithme
MODULE SETVBUF(stream, tampon, mode, size) SI stream est NULL ALORS * Flux invalide RETOURNE ERROR_INVALID_STREAM FIN SI SI mode n'est pas un (_IOFBF, _IOLBF, _IONBF) ALORS * Mode invalide RETOURNE ERROR_INVALID_MODE FIN SI SI tampon est NULL ALORS * Si tampon est NULL, un tampon interne est alloué tampon ← allocate_new_buffer(size) FIN SI SI la taille < la taille minimale requise ALORS * Taille de tampon trop petite RETOURNE ERROR_INVALID_SIZE FIN SI * Appliquer le tampon au flux en fonction du mode set_buffer_for_stream(stream, tampon) set_buffer_mode(stream, mode) set_buffer_size(stream, size) * Fonction réussie RETOURNE SUCCESS |
Remarques
- Types de mode de tampon : La fonction setvbuf permet de définir trois modes de tamponnement :
- _IOFBF : tampon complet, où les données sont d'abord stockées dans un tampon et ensuite écrites ou lues en une seule opération.
- _IOLBF : tampon de ligne, où le tampon est vidé dès qu'une nouvelle ligne est rencontrée.
- _IONBF : pas de tampon, où les données sont immédiatement lues ou écrites sans être tamponnées.
- Tamponnement et Performance : L'utilisation de setvbuf pour contrôler le type de tampon peut avoir un impact significatif sur la performance des opérations d'entrées/sorties. Par exemple, le mode _IOFBF est plus performant pour les écritures en bloc, car il minimise les appels système en regroupant les écritures. En revanche, _IONBF est généralement plus lent car chaque opération de lecture ou d'écriture est immédiatement effectuée.
- Utilisation de tampon personnalisé : Il est possible de spécifier un tampon personnalisé pour le flux en passant un pointeur vers un tableau de caractères dans le paramètre tampon. Cela peut être utile dans des situations où vous avez besoin d'un contrôle plus fin sur la gestion du tampon, par exemple en utilisant une mémoire tampon partagée ou en contrôlant explicitement la taille du tampon.
- Appel avant ou après l'ouverture du flux de données : La fonction setvbuf doit être appelée avant ou immédiatement après l'ouverture d'un flux avec fopen ou freopen. Si elle est appelée après des opérations de lecture ou d'écriture sur le flux de données, l'effet peut être indéfini et entraîner des erreurs de comportement.
- Retour de valeur : La fonction setvbuf retourne 0 si l'opération est réussie, et EOF si une erreur se produit (par exemple, si le mode ou la taille spécifiée est invalide). Il est donc recommandé de toujours vérifier la valeur de retour pour s'assurer que le tampon a été correctement configuré.
- Compatibilité et portabilité : La fonction setvbuf est définie par la norme ANSI C, ce qui la rend disponible sur la plupart des plateformes compatibles C. Cependant, le comportement exact, notamment concernant la gestion du tampon, peut varier d'un système à l'autre en fonction des spécificités du compilateur et du système d'exploitation sous-jacent.
- Gestion de l'erreur avec setvbuf : En cas de mauvais usage, comme une taille de tampon incorrecte ou un mode non valide, setvbuf peut échouer et retourner EOF. Dans ces cas, il est important de vérifier que le flux est bien ouvert et que les paramètres de tampon sont valides avant d'appliquer setvbuf, afin d'éviter les comportements inattendus.
Le choix du mode a un impact direct sur la performance des opérations de fichier.
Voir également
Langage de programmation - C - Référence de procédures et fonctions - fflush
Langage de programmation - C - Référence de procédures et fonctions - fopen
Langage de programmation - C - Référence de procédures et fonctions - setbuf
Langage de programmation - C++ - Référence de procédures et fonctions - setvbuf
Références
Langage C, Edition Micro-Application, Gehard Willms, 2001, ISBN: 2-7429-2008-0, page 734.
Borland C++ for Windows 4.0, Library Reference, Edition Borland, 1993, Part # BCP1240WW21772, page 236.
Dernière mise à jour : Mardi, le 28 juillet 2015