我有一个struct timespec
对象需要转换为struct timeval
用于lutimes(...)
.
我尝试了以下操作,但lutimes()
抱怨。
const struct timespec ts; // originally provided as function parameter from FUSE
struct timeval tv;
tv.tv_sec = ts.tv_sec;
tv.tv_usec = ts.tv_nsec / 1000;
lutimes(path, tv); // returns -1; errno=EINVAL
现在EINVAL
fromlutimes
表示 usec 组件在 之外0 <= tv_usec < 1000000
,这意味着转换 fromtimespec
出错了。[资源]
我如何正确转换timespec
为timeval
?
使用该命令进行更彻底的调试会touch
显示timespec
包含tv_sec = 0
and tv_nsec > 1000000000
,当没有指定特定日期并且应该使用当前时间时。
为什么是这样?处理这个问题的正确方法是什么?