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
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