学习C和我试图直观地比较stat()
为atime / mtime属性和nsec精度值返回的变量类型和大小。
我在文件上运行stat()
并希望从返回的stat结构中获取mtime和mtime nsec值,然后将这些值存储在单独的变量中(我希望将其传递给{{1}长篇故事!)
根据{{3}},我可以根据各种操作系统/构建条件从utimes()
或st_mtim.tv_nsec
获取值。在我的实际程序中,我将检查两者并使用设置的任何一个,或者只是回退到st_mtimensec
的正常第二精度
我需要声明什么变量类型和大小才能存储st_mtime
返回的正常时间戳?
我需要声明哪种变量类型和大小来存储来自st_mtime
或st_mtim.tv_nsec
的nsec值?
这些是小数,包括整个秒数吗?或者他们只返回当时的nsec部分?
我是否需要为nsecs声明不同的变量大小,具体取决于我的系统架构?
最后,使用st_mtimensec
输出这些变量需要哪些转换说明符?
干杯,B
答案 0 :(得分:4)
st_mtime
应为time_t
。<time.h>
,tv_nsec
的类型只是long
。st_mtim.tv_nsec
这样的字段将返回纳秒数。long
,您需要l
;对于time_t
,它没有明确定义,AFAIK。答案 1 :(得分:1)
st_mtim.tv_nsec
始终在[0,999999999]范围内。您需要从tv_sec
获取秒数。从理论上讲,你可以将秒数乘以1000000000并将它们存储在64位值中,但它会在几百年左右的时间内溢出。