Next: Manipulation des tampons de
Up: Les tampons de fichiers
Previous: Les tampons de fichiers
Le mode de bufferisation des fichiers ouverts par la bibliothèque standard dépend du type de périphérique.
- Si le fichier est un terminal la bufferisation est faite ligne à ligne.
En écriture le tampon est vidé à chaque écriture d'un
'\n'
, ou quand il est plein (première des deux occurences).
En lecture le tampon est rempli après chaque
validation (RC), si l'on tape trop de caractères le terminal
proteste (beep) le buffer clavier étant plein.
- Si le fichier est sur un disque magnétique
En écriture le tampon est vidé avant de déborder.
En lecture le tampon est rempli quand il est vide.
Le shell de login change le mode de bufferisation de stderr qui est un fichier terminal à non bufferisé.
Nous avons donc à notre disposition trois modes de bufferisation standards:
- Non bufferisé (sortie erreur standard),
- Bufferisé par ligne (lecture/écriture sur terminal),
- Bufferisé par blocs (taille des tampons du buffer cache).
Les terminaux acceptent d'autres modes de bufferisation plus complexes en entrée que nous étudierons avec les particularités de ces périphériques (chapître 11).
Un exemple de réouverture de la sortie standard, avec perte du
mode de bufferisation:
#include <stdio.h>
main()
{
freopen("/dev/tty", "w", stderr);
fprintf(stderr, "texte non termine par un newline ");
sleep(12);
exit(0); /* realise fclose(stderr) qui realise fflush(stderr) */
}
Il faut attendre 12 secondes l'affichage.
Dominique REVUZ
Mon Feb 2 12:10:31 MET 1998
Une Bug Un mail Merci