les flux sont à peu près aussi bas que vous pouvez obtenir .. et ils peuvent être unbuffered.
int setvbuf(
FILE *stream,
char *buffer,
int mode,
size_t size
);
exemple
setvbuf(stdout, (char *)NULL, _IONBF, 0); //unbuffered stdout
est ici un extrait du document d'aide VC2008.
La fonction setvbuf permet au programme de contrôler à la fois la mise en mémoire tampon et la taille de la mémoire tampon pour le flux. stream doit faire référence à un fichier ouvert qui n'a pas subi d'opération d'E/S depuis son ouverture. Le tableau pointé par buffer est utilisé comme tampon, à moins qu'il ne soit NULL, auquel cas setvbuf utilise un tampon alloué automatiquement de longueur/2 * 2 octets.
Le mode doit être _IOFBF, _IOLBF ou _IONBF. Si le mode est _IOFBF ou _IOLBF, la taille est utilisée comme taille du tampon. Si le mode est _IONBF, le flux n'est pas tamponné et la taille et le tampon sont ignorés. Les valeurs pour le mode et leurs significations sont les suivantes:
_IOFBF Tampon complet; c'est-à-dire que le tampon est utilisé comme tampon et que la taille est utilisée comme taille du tampon. Si le tampon est NULL, une taille de tampon allouée automatiquement est utilisée.
_IOLBF Pour certains systèmes, cela fournit une mise en mémoire tampon de ligne. Cependant, pour Win32, le comportement est le même que _IOFBF - Full Buffering.
_IONBF Aucun tampon n'est utilisé, quel que soit le tampon ou la taille.
Est-ce pour éviter le cache disque, ou pour éviter le type de tampon qui interfère avec les tuyaux et/ou examine la sortie telle qu'elle est écrite? –