• 正文
  • 相关推荐
申请入驻 产业图谱

飞凌嵌入式ElfBoard-文件的时间属性

6小时前
176
加入交流群
扫码加入
获取工程师必备礼包
参与热点资讯讨论

在前面的struct stat结构体中的参数基本介绍完毕,还有最后一个属性,是文件的时间属性,时间属性都包括如下内容:

结构体字段 说明
struct timespec st_atim; 文件最后访问时间
struct timespec st_mtim; 文件内容最后修改时间
struct timespec st_ctim; 文件状态最后状态改变时间

文件最后访问时间:顾名思义是指最后一次读取文件内容的时间,如使用read函数读取文件的内容之后,此项时间就会发生变化。

文件内容最后修改时间:指文件内容发生改变,如使用write函数向文件中写入数据,变会发生变化。

文件状态最后被修改时间:状态更改时指文件的inode节点最后一次被修改的时间。

那什么情况下inode节点话发生变化呢?下面就简单介绍下。

1.文件内容被修改:通过函数对文件读写时,会更新inode节点的修改时间和状态更改时间。如函数fwirte()或者wirte()。

2.文件属性修改:修改文件的权限、所有者或者文件名,就会更新inode节点的状态更改时间。如前面提到的chmod()、 chown()、 rename()函数。

3.创建或删除文件:创建新的文件或者删除文件也会影响inode节点。如open()、creat()、unlink()、remove()。

那么如何修改文件的时间属性呢?下面就来介绍4个修改时间属性的函数:

修改时间属性的函数有utime()、utimes()、futimens()、utimensat()等函数,下表中为函数的基本区别:

函数 功能 时间精度
utime() 设置文件的访问时间和修改时间 秒级别
utimes() 设置文件的访问时间和修改时间 微秒级别
utimensat() 设置文件的访问时间和修改时间 纳秒级别
futimens() 设置已打开文件的访问时间和修改时间 纳秒级别

上面介绍了修改时间属性函数的基本区别,需要注意的是,不是所有的用户都可以修改文件的时间属性,只有超级用户和有效用户ID和文件用户ID相匹配的进程才会拥有修改权限。

相关推荐