学习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_nsec或st_mtimensec获取值,具体取决于各种OS /构建条件.在我的实际程序中,我将检查两者并使用任何设置,或者只是回退到st_mtime的正常第二精度
我需要声明什么变量类型和大小才能存储st_mtime返回的正常时间戳?
我需要声明什么变量类型和大小来存储来自st_mtim.tv_nsec或st_mtimensec的nsec值?
这些是小数,包括整个秒数吗?或者他们只是返回nsec部分的时间?
我是否需要为nsecs声明不同的变量大小,具体取决于我的系统架构?
最后,使用printf()输出这些变量需要哪些转换说明符?
干杯,B
解决方法:
> st_mtime应该是time_t.
>根据POSIX <time.h>
,tv_nsec的类型很长.
> st_mtim.tv_nsec等字段将返回纳秒数.
>长久以来,你需要我;对于time_t,它没有明确定义,AFAIK.