2012-02-11 103 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)。