我在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;
}

09-30 21:40