时间结构的转换关系
mllisecond 毫秒, microsecond 微秒, nanosecond 纳秒
较为准确的等待10秒的写法:
while((s=sleep(10))); //因为sleep()有可能不到10秒就返回非0值
高精度(纳秒级)时间等待:
#include <time.h>
struct timespec req={ .tv_sec=1,
.tv_nsec=3000 }; //等待1.000003 s
struct timespec rem, *a=&req, *b=&rem;
while(nanosleep(a, b)&&errno==EINTR)
{ struct timespec *tmp=a;
a=b;
b=tmp;
}
准确时间等待:
struct timespec ts;
int ret;
ret=clock_gettime(CLOCK_MONOTONIC, &ts);
if(ret)
{ perror("clock_gettime()");
return;
}
ts.tv_sec+=1;
ret=clock_nanosleep(CLOCK_MONOTONIC, TIMER_ABSTIME, &ts, NULL);//准确等到从clock_gettime()结束后1秒,这里返回
if(ret)
{ perror("clock_nanosleep()");
return;
}