2012-02-11 10 views
6

Ho scritto una piccola applicazione console e voglio che si fermi per un certo numero di secondi prima che il ciclo (un po ') ricominci.Attendi/sospendi un numero di secondi in C

Sto lavorando al sistema operativo Windows.

+0

Non penso che 'seconds' sia un tag molto utile. –

risposta

10

Su Windows, la funzione per eseguire questa operazione è Sleep, che richiede l'importo di millisecondi per cui si desidera dormire. Per utilizzare Sleep, è necessario includere windows.h.

Su POSIX-Systems, la funzione sleep (da unistd.h) compie questo:

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. 

Se è interrotta da un segnale, il tempo rimanente di dormire viene restituito. Se si utilizza i segnali, una soluzione più robusta sarebbe:

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

Questo è naturalmente assumendo segnale-gestori di prendere solo una quantità trascurabile di tempo. (In caso contrario, questo ritarderà il programma principale più a lungo del previsto)

+1

sembra che con Windows "sleep()" sia un no-no. – Ldx

+3

Sleep() funziona correttamente, incluso Ldx

3

facile:

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

Il passaggio dell'argomento 10 non ti darà 10 secondi. – nicomp

0

Su UNIX:

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

Su Windows:

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

notare la differenza tra sleep() (UNIX) e Sleep() (Wind OWS).

Problemi correlati