struct timeval
tv_sec
用两个成员(秒)和tv_usec
(微秒)表示和即时。在这个表示中,tv_usec
它本身并不是一个绝对时间,它是一个亚秒级的偏移量tv_sec
。
struct timespec
工作方式相同,只是它的偏移量 ( tv_nsec
) 不是以微秒为单位存储的,而是以纳秒为单位。
问题是:这两者之间是否有标准的转换方式?
有sys/time.h
两个宏可以做你想做的事:
TIMEVAL_TO_TIMESPEC(X, Y)
和
TIMESPEC_TO_TIMEVAL(X, Y)
请参阅此处的文档:http ://www.daemon-systems.org/man/TIMEVAL_TO_TIMESPEC.3.html
看看这个文档,我认为乘以tv_usec
1000 就足够了tv_nsec
。
更重要的是,我怀疑是不同结构的来源:它们可以由不同的时钟填充。