等待指定的时间而不使用C

我想知道如何使用C来延迟几秒钟,而不使用while循环。 我得到的样本是使用while循环。 这工作,但我不想使用while循环。 请帮忙

while(clock() < endwaitTime) { if(!GetFlag()) { print(" Canceled "); return ; } } 

您可以使用sleep()来暂停您的应用程序达到给定的秒数,也可以使用usleep()将给定的微秒数暂停应用程序。

您还可以浏览select()的阻塞属性以使微秒精度暂停。 有些应用程序喜欢这样做,不要问我为什么。

关于你的while()循环,永远不要这样做。 这不是暂停。 您的应用程序将循环使用99%的CPU,直到时间已过。 这是一个非常愚蠢的做法。

此外,它最好使用time()来获取当前的UNIX时间,并将其用作参考,而difftime()则用秒来获取与sleep()一起使用的时间增量。

clock()可能会有问题,因为32位系统上的这个函数每72分钟会返回一个相同的数字,而且你通常会得到一个比clock()的当前返回值低的endwaitTime

遵循http://linux.die.net/man/3/sleep

 #include <unistd.h> ... // note clock() is seconds of CPU time, but we will sleep and not use CPU time // therefore clock() is not useful here --- // Instead expiration should be tested with time(), which gives the "date/time" in secs // since Jan 1, 1970 long int expiration = time()+300 ; // 5 minutes = 300 secs. Change this as needed. while(time() < expiration) { sleep(2); // dont chew up CPU time, but check every 2 seconds if(!GetFlag()) { print(" Canceled "); return ; } } ... 

当然,如果一个sleep()足够好,你可以完全摆脱while循环。 短暂停顿,这可能是好的。 当进程处于休眠状态时,输入仍然由Linux排队,当它从睡眠状态唤醒时,它将被传送到程序的标准输入。