发布
社区首页 >问答首页 >C Linux stat()以nsec精度获取atime/mtime

C Linux stat()以nsec精度获取atime/mtime
EN

Stack Overflow用户
提问于 2012-05-23 08:11:42
回答 2查看 4.4K关注 0票数 3

学习C语言,我试图对stat()返回的atime/mtime属性和nsec精确值的变量类型和大小进行直观的比较。

我在一个文件上运行stat(),希望从返回的stat结构中获得mtime和mtime nsec值,然后将这些值存储在单独的变量中(然后我希望将这些变量传递给utimes()……说来话长!)。

根据http://www.kernel.org/doc/man-pages/online/pages/man2/stat.2.html#NOTES,我可以根据不同的操作系统/构建条件从st_mtim.tv_nsecst_mtimensec获取该值。在我的实际程序中,我将检查两者,并使用设置的任何一个,或者只是后退到st_mtime的正常秒精度

为了存储由st_mtime返回的普通时间戳,我需要声明什么类型和大小的变量

要从st_mtim.tv_nsecst_mtimensec存储nsec值,我需要声明什么变量类型和大小

这些是小数吗,包括时间的整秒数?或者他们只是在时间上返回nsec部分?

我需要根据我的系统架构为nsecs声明不同的变量大小吗?

最后,使用printf()输出这些变量需要哪些转换说明符

干杯,B

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-05-23 08:37:12

  1. st_mtime应该是一个time_t.
  2. According to POSIX tv_nsec,类型只是nanoseconds.
  3. For字段,就像long会返回的编号一样,你需要l;对于time_t,它没有明确定义,AFAIK。
票数 4
EN

Stack Overflow用户

发布于 2012-05-23 09:48:38

st_mtim.tv_nsec始终在0,999999999范围内。您需要从tv_sec获取秒数。理论上,您可以将秒数乘以1000000000,并将它们存储在一个64位的值中,但它将在几百年左右的时间内溢出。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10711801

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档