FFlush o setvbuf
Inviato: domenica 17 febbraio 2013, 13:14
allora, come detto in precedenza, la differenza fra una write ed una printf è che:
la printf è line buffered (ovvero scarica lo stream quando incontra /n)
la write è senza bufferizzazione (ovvero scarica lo stream subito)
la setvbuf():
imposta la bufferizzazione di uno stream e l'argomento mode può assumere tre valori:
1) _IONBF (i/o non bufferizzato)
2) _IOLBF (i/o bufferizzato per linea)
3) _IOFBF (i/o totalmente bufferizzato)
adesso se vuoi che la write() si comporti come la printf() prima della write imposti la bufferizzazione per linea, in caso contrario;
imposti la printf con la bufferizzazione totale.
la printf è line buffered (ovvero scarica lo stream quando incontra /n)
la write è senza bufferizzazione (ovvero scarica lo stream subito)
la setvbuf():
Codice: Seleziona tutto
int setvbuf(FILE *stream, char *buf, int mode, size_t size);
1) _IONBF (i/o non bufferizzato)
2) _IOLBF (i/o bufferizzato per linea)
3) _IOFBF (i/o totalmente bufferizzato)
adesso se vuoi che la write() si comporti come la printf() prima della write imposti la bufferizzazione per linea, in caso contrario;
imposti la printf con la bufferizzazione totale.