PDA

View Full Version : [C] Modalità di bufferizzazione


Bahamut Zero
25-04-2006, 19:14
Domani devo fare un esame di laboratorio di sistemi operativi e c'è un esercizio dove devo giustificare la mia risposta che non riesco ad affrontare al meglio!

Ho il primo programma

int main (void) {
char buf [] = "Ho finito il main\n";
printf(Ho iniziato il main\n");
write (1,buf,10);
}

e devo dire l'output in 2 casi specifici!

a) a.out HO INIZIATO IL MAIN
HO FINITO

b) a.out > file
cat file HO FINITO HO INZIATO IL MAIN


Mentre il secondo programma

int main (void) {
char buf [] = "Ho finito il main\n";
printf(Ho iniziato il main\n");
fflush(1)
write (1,buf,10);
}

a) a.out
b)a.out > file
cat file

Entrambi questi 2 metodi di output mi ritornano HO INIZIATO IL MAIN
HO FINITO

Ora non so bene come giustificare queste risposte!

E' un discorso di bufferizzazione!
Printf e Standard Input/Output sono LINE BUFFERED se associati ad un terminale altrimenti FULLY BUFFERED come nel caso della redirezione a FILE!
Write invece è UNBUFFERED!
Però mi confondo sempre e non so bene come scriverlo sopratutto ocn quella FFLUSH che se non sbaglio mi pare scarica tutto il buffer sull'output!

Pls :help: me

andbin
25-04-2006, 19:34
È una questione che è già stata discussa qui (http://www.hwupgrade.it/forum/showthread.php?t=1186035).

Bahamut Zero
25-04-2006, 19:39
mi sono reso conto che l'altro utente MOLTO probabilmente deve fare il mio stesso esame con la stessa professoressa :asd: