2012-02-11 14 views
6

Escribí una pequeña aplicación de consola, y quiero que se detenga durante un cierto número de segundos antes de que el ciclo (un tiempo) comience nuevamente.Espera/pausa una cantidad de segundos en C

Estoy trabajando en el sistema operativo Windows.

+0

No creo que 'seconds' sea una etiqueta muy útil. –

Respuesta

10

En Windows, la función para hacer esto es Sleep, que toma la cantidad de milisegundos desea dormir. Para usar Sleep, debe incluir windows.h.

En POSIX-Systems, la función de sleep (unistd.h) logra esto:

unsigned int sleep(unsigned int seconds); 

    DESCRIPTION 
      sleep() makes the calling thread sleep until 
      seconds seconds have elapsed or a signal arrives which is not ignored. 

Si es interrumpido por una señal, se devuelve el tiempo restante para dormir. Si utiliza señales, una solución más robusta sería:

unsigned int time_to_sleep = 10; // sleep 10 seconds 
while(time_to_sleep) 
    time_to_sleep = sleep(time_to_sleep); 

Esto es, por supuesto, asumiendo que la señal de manipuladores sólo tienen una cantidad insignificante de tiempo. (De lo contrario, esto retrasará el programa principal tiempo de lo previsto)

+1

Parece que con Windows "sleep()" es un no-no. – Ldx

+3

Sueño() en su lugar funciona bien, incluyendo Ldx

3

fácil:

while(true) 
{ 
    // your stuff 
    sleep(10); // sleeping for 10 seconds 
}; 
+0

Pasar el argumento 10 no le dará 10 segundos. – nicomp

0

En UNIX:

#include <unistd.h> 
sleep(10000); // 10 seconds 

En Windows:

#include <windows.h> 
Sleep(10000); // 10 seconds 

Nota la diferencia entre sleep() (UNIX) y Sleep() (viento ows).

Cuestiones relacionadas