Linux上的ctime总是大于或等于mtime吗?

mxl*_*ian 4 filesystems timestamps files

我试图弄清楚 Linux 上文件的时间戳是如何工作的。

在这个答案中指出:

修改——文件最后一次修改时间(内容已被修改)

更改 - 文件的元数据上次更改的时间(例如权限)

但每次我更改文件内容时,ctime 也会更改。这让我觉得这就像一种变化反应:

  1. 文件内容的改变会触发mtime的改变
  2. mtime(文件元数据)的变化触发ctime的变化

如果这是真的,那么 ctime 将始终 >= 大于 mtime。

这个假设在所有情况下都是正确的吗?(假设系统时间从未手动更改)

Tho*_*key 5

否:您可以将mtime(修改时间)和atime(访问时间)设置为任意时间戳(在数据类型的限制内,包括未来的time_t日期)。这样做后,ctime将是当前时间。

utimes函数(更新mtimeatime)接受一对timeval结构,它们组合了time_t(秒) 和 微秒,可能会提高分辨率,但不限于过去的时间。