mtime是修改过程的开始时间还是结束时间

时间:2013-03-03 06:26:53

标签: linux filesystems

修改过程开始时(打开并写入文件)或修改过程结束(关闭文件)时是否更新了mtime?

我在link找到了一些东西。

See man 2 stat for the semantics of mtime and ctime. In practice, the mtime and ctime will be updated in the in-memory copy of the inode and flushed out to disk asynchronously.

我认为inode可能不止一次被刷新。如果是真的。 这是否意味着在修改过程中mtime可能会多次更新?

1 个答案:

答案 0 :(得分:1)

从概念上讲,每次修改都会在特定时刻发生。 mtime是最近此类事件发生的时间。

如果你愿意,你可以考虑对文件进行大量写入,就好像它被分成一系列单个写入的一个字节(或者如果你想要的话!)。每个单字节写入瞬间发生。因此,在大量写入需要花费大量时间之后,修改时间应该反映大写的最后一部分完成的时间,即大写的结束。

这是常规写入(write()pwrite()writev()等等......)当文件映射到内存时,应该发生什么不是很清楚(使用{{1并且更新与文件映射关联的一个内存地址。但在这种情况下,标准有答案。从Linux的mmap()联机帮助页:“在映射到映射区域之后,以及在具有MS_SYNC或MS_ASYNC标志的后续msync(2)之前,将更新用PROT_WRITE和MAP_SHARED映射的文件的st_ctime和st_mtime字段,如果一个发生。“

顺便说一下,打开文件不算作修改(即使您打开文件进行写入)。关闭文件也不算作修改。实际上只是写信给它。