2012-02-11 104 views
6

我寫了一個小控制檯應用程序,並且我希望它在循環(一段時間)再次開始之前暫停一定的秒數。等待/暫停C秒數

我正在使用Windows操作系統。

+0

我不認爲'秒'是一個非常有用的標籤。 – 2012-02-11 15:18:48

回答

10

在Windows上,執行此操作的函數是Sleep,這需要毫秒的數量要睡覺。要使用Sleep,您需要包含windows.h

在POSIX的系統,功能sleep(從unistd.h)實現此:

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. 

如果通過信號中斷,則返回的剩餘時間入睡。如果你使用的信號,一個更強大的解決方案是:

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

當然這是假設你的信號處理程序只需要時間的可以忽略不計的。 (否則,這將延誤主程序長於預期)

+1

它似乎與Windows「睡眠()」是一個禁忌。 – Ldx 2012-02-11 15:06:10

+3

睡眠()而不是工作正常,包括 Ldx 2012-02-11 15:21:23

3

容易:

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

傳遞參數10不會給你10秒。 – nicomp 2016-12-14 01:37:29

0

UNIX

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

Windows

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

注的區別sleep()(UNIX)和Sleep()(Wind OWS)。