在unix系统中,每个文件要保持三个时间字段,他们的意义分别如下:
字段 | 说明 | 例子 | ls选项 |
st_atime st_mtime st_time | 文件数据的最后访问时间 文件按数据的最后修改时间 i节点状体的最后更改时间 | read write chmo,chown | -u 默认 -c |
注意st_mtime 指的是文件内容的最后修改时间,而st_ctime指的是i节点的最后修改时间。i节点之前讲过比如文件访问权限,用户ID,文件的连接数。但没有更改文件的实质数据的内容,因为文件的i节点信息和文件的数据是分开反的。所以除了文件的数据修改时间以外,还是要更改状态时间的。
注意 系统并不保存对一个i节点 的最后一次访问时间,所以access和stat函数并不更改这三个时间里的任何一个。
其中 ls命令对文件时间进行排序显示。比如 -r是按照最新修改的时候先后排序。-u是按照其访问时间进行排序。-c则是按照更改状态的时间来排序。
表4-9 各种函数对存取、修改和更改状态时间的作用
上表显示了各种函数对文件三种时间的作用。4.14节说过,目录是包含目录项的文件,增加,删除或者修改目录项会影响到与其所在相关的三个时间。
这就是为什么上表中有两列。一个是引用文件或目录,另一是引用文件的父目录。
比如创建一个新文件会影响到包含此新文件的目录,也会影响到该新文件的i节点。但是读或者写只对本文件及i节点,而对目录没有影响。