在C语言中等待/暂停若干秒钟

12

我写了一个小的控制台应用程序,想要在循环(while)再次开始之前暂停一定数量的秒数。

我正在使用Windows操作系统。


我认为“seconds”不是一个非常有用的标签。 - Lightness Races in Orbit
3个回答

14
在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中使用“sleep()”是不可取的。 - Ldx

3

关于UNIX

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

Windows上:

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

请注意sleep()(UNIX)和Sleep()(Windows)之间的区别。

1
在你的例子中,Unix 将等待 10000 秒而不是 10 秒。 - Hamza Anis
@HamzaAnis:我的代码中没有这个问题,但是在编译Code::Blocks时有。数字10会让程序等待10秒钟。已在Linux和BSD上进行了测试。 - Sopalajo de Arrierez

3

易用:

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

1
传递参数10并不会给你10秒钟。 - nicomp

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接