|
|
|
|
Strumenti |
19-01-2011, 13:12 | #1 |
Member
Iscritto dal: Dec 2008
Messaggi: 96
|
[C] Uso della funzione sleep
Salve a tutti, vi mostro il mio codice:
Codice:
#include <stdio.h> #include <pthread.h> int main(int argc, char** argv) { printf("Primo messaggio"); sleep(2); printf("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!!! Ultima modifica di mech666 : 19-01-2011 alle 13:23. |
19-01-2011, 13:35 | #2 |
Senior Member
Iscritto dal: Nov 2005
Messaggi: 2745
|
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
Codice:
fflush(stdout); |
19-01-2011, 13:48 | #3 |
Member
Iscritto dal: Dec 2008
Messaggi: 96
|
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...!!! |
19-01-2011, 14:08 | #4 |
Senior Member
Iscritto dal: Nov 2005
Messaggi: 2745
|
Sì, la questione dei buffer riguarda solo l'input/output.
|
19-01-2011, 14:14 | #5 |
Member
Iscritto dal: Mar 2008
Messaggi: 267
|
In alternativa per svuotare il buffer dovrebbe bastare andare a capo ("\n").
|
19-01-2011, 14:18 | #6 |
Member
Iscritto dal: Dec 2008
Messaggi: 96
|
|
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 01:15.