文件创建/打开对st_mtime和st_atime的影响

时间:2011-04-12 06:25:42

标签: unix file-io

当我使用O_CREAT标志在UNIX中创建或打开文件时,文件的st_mtimest_ctimest_atime会发生变化。但是,当我使用O_TRUNC标记创建或打开文件时,只有st_mtimest_ctime更改而不是st_atime

根据我的理解,st_atime会在访问文件时发生更改。当我们使用O_TRUNC标志打开或创建文件时,我们是否不访问该文件?

1 个答案:

答案 0 :(得分:4)

这个问题有点陈旧,但至少是对后代的答案......

来自stat(2)手册页(在具有linux 2.6.32内核的主机上):

  

字段st_atime由文件访问更改,例如,execve(2),mknod(2),pipe(2),   utime(2)和read(2)(超过零字节)。其他例程,如mmap(2),可能会也可能不会   更新st_atime。

     

字段st_mtime由文件修改更改,例如,mknod(2),truncate(2),   utime(2)和write(2)(大于零字节)。而且,目录的st_mtime改变了   创建或删除该目录中的文件。更改时不更改st_mtime字段   在所有者,组,硬链接计数或模式中。

     

通过写入或设置inode信息(即所有者,组,链接)来更改字段st_ctime   计数,模式等。)。