我有一个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
现在EINVALfromlutimes表示 usec 组件在 之外0 <= tv_usec < 1000000,这意味着转换 fromtimespec出错了。[资源]
我如何正确转换timespec为timeval?
使用该命令进行更彻底的调试会touch显示timespec包含tv_sec = 0and tv_nsec > 1000000000,当没有指定特定日期并且应该使用当前时间时。
为什么是这样?处理这个问题的正确方法是什么?