PDA

View Full Version : [C] Uso della funzione sleep


mech666
19-01-2011, 14:12
Salve a tutti, vi mostro il mio codice:


#include <stdio.h>
#include <pthread.h>

int main(int argc, char** argv) {

printf("Primo messaggio");

sleep(2);

printf("Secondo messaggio");

}


Il mio intento è quello di scrivere subito "Primo messaggio", attendere 2 secondi tramite la funzione sleep, e poi scrivere "Secondo messaggio".
Ho invece constatato che in esecuzione vengono attesi 2 secondi e poi vengono scritte entrambe le stringhe "Primo Messaggio" e "Secondo Messaggio".
Come mai ho questo comportamento???
Vi ringrazio in anticipo delle risposte!!!

wingman87
19-01-2011, 14:35
Perché l'output viene bufferizzato. Quando il buffer è pieno o viene richiesto in qualche modo che sia svuotato (ad esempio quando il programma termina, come nel tuo caso) allora il suo contenuto viene stampato. Per richiedere esplicitamente lo svuotamento del buffer aggiungi
fflush(stdout);
prima della sleep. stdout è lo stream standard di output.

mech666
19-01-2011, 14:48
Ti ringrazio wingman!
E se invece di stampare a video eseguo delle operazioni???
Posso mantenere un flusso di esecuzione del tipo:

-OPERAZIONE 1-

-ATTESA CON SLEEP-

-OPERAZIONE 2-

oppure avrò:

-ATTESA CON SLEEP-

-OPERAZIONE 1,2-

Ti ringrazio ancora...!!!

wingman87
19-01-2011, 15:08
Sì, la questione dei buffer riguarda solo l'input/output.

Supdario
19-01-2011, 15:14
In alternativa per svuotare il buffer dovrebbe bastare andare a capo ("\n").

mech666
19-01-2011, 15:18
Sì, la questione dei buffer riguarda solo l'input/output.

Grazie mille!!! :)