我在MacOS(OS X El Capitan 10.11.2)中记录时间间隔(至少以毫秒为单位)时遇到问题。
显然,基本思想是记录时间两次并进行减法。当我发现“sys/time.h”中有gettimeofday()以及该函数的结构-struct timeval时,发生了问题。然后我得到了时间间隔,并希望根据该时间间隔使其进入睡眠状态。但是,似乎nanosleep()或usleep()都没有timeval类型的参数(忽略的sleep(),因为我至少需要毫秒)。
我应该将timeval转换为适合nanosleep()或usleep()的方法,还是有一种更好,更简单的方法?
最佳答案
此示例使用select
休眠timeval
值(此处为10秒):
#include <stdio.h>
#include <unistd.h>
#include <sys/time.h>
#include <sys/select.h>
int main(void)
{
printf("start...\n");
struct timeval tv = {10, 0};
select(0, NULL, NULL, NULL, &tv);
printf("done!\n");
return 0;
}