3

Is there a wait statement in c-component? for example, wait for 0.5 second before continuing the process?

thanks!

4

4 回答 4

7

In POSIX there is

usleep(500);

and

nanosleep(...);

have a look at the manual of usleep(3) and nanosleep(2). EDIT: nanosleep seems now to be the way to go, usleep is even deprecated in POSIX.2008 according to its manpage!

于 2009-02-12T15:28:38.480 回答
7

总结和纠正 Johannes Weiss 帖子中的一个小问题(非德语键盘,抱歉):

在老式 POSIX 中,您可以使用 usleep() 函数,该函数接受睡眠的微秒数作为无符号整数参数。因此,要睡半秒钟,你会打电话:

#include <unistd.h>
usleep(500000); /* Five hundred thousand microseconds is half a second. */

对于较新的 POSIX 风格的程序(我的 Gentoo Linux 盒子的手册页说它是 POSIX.1-2001),你会使用 nanosleep(),它需要一个指向保持睡眠周期的结构的指针。睡半秒会是这样的:

#include <time.h>
struct timespec t;
t.tv_sec = 0;
t.tv_nsec = 500000000; /* Five hundred million nanoseconds is half a second. */
nanosleep(&t, NULL); /* Ignore remainder. */

nanosleep() 的第二个参数称为“rem”,如果睡眠被某种方式中断,它会接收剩余的时间。为了简单起见,我将其保留为 NULL,在这里。你可以做一个循环,直到 rem 是(足够接近)零,以确保你真的得到你的睡眠,无论任何中断。

于 2009-02-13T07:43:47.793 回答
3

For Windows there is this function available in the API

Sleep(500);

Have a look at its MSDN page. It sleeps for the specified amount of milliseconds.

于 2009-02-12T15:31:41.580 回答
0

sleep 在 POSIX 中也可用,不同之处在于参数指定进程应该休眠的秒数而不是毫秒数。

于 2009-02-13T07:20:45.417 回答