unsigned int sleep(unsigner int second)
dove second è il tempo (espresso in secondi) per cui si vuole che il processo sia fermo.
Ovviamente la praticità di questa funzione è evidente ma proprio l'altro giorno mentre utilizzavo questo metodo mi sono imbattuto in un errore.
Il programma in questione era qualcosa del tipo:
# include <stdio.h>
# include <unistd.h>
int main()
{
int i;
for (i=0;i<=4;i++)
{
printf("stringa");
sleep(1);
}
return 0;
}
Nel terminale infatti avrei dovuto vedere stampata una parola ogni secondo per un tempo di 4 secondi; quando però lanciavo via terminale il mio programma compilato notavo che le mie parole venivano stampate tutte insieme senza tenere conto dell'attesa di sleep. Dov'era allora il problema? Bene il problema risiedeva in dei problemi di bufferizzazione dell'ouput standard. Il problema è facilmente arginabile ponendo un fflush(stdout) dopo lo sleep; fflush infatti forza la scrittura dei dati presenti nel buffer. Pertanto, molto semplicemente il codice diventa:
# include <stdio.h>
# include <unistd.h>
int main()
{
int i;
for (i=0;i<=4;i++)
{
printf("stringa");
sleep(1);
fflush(stdout);
}
return 0;
}
Spero di essere stato utile.....alla prossima!