Unix 文件创建/打开对存储时间和存储时间的影响

Unix 文件创建/打开对存储时间和存储时间的影响,unix,file-io,Unix,File Io,在UNIX中使用O_create标志创建或打开文件时,文件的st_mtime、st_ctime和st_atime会发生更改。但是,当我使用O_TRUNC标志创建或打开文件时,只有st_mtime和st_ctime更改,而不是st_time 据我理解,st_atime在访问文件时会发生更改。当我们使用O_TRUNC标志打开或创建一个文件时,我们不是在访问该文件吗?这个问题有点老了,但至少对后代来说是一个答案 从stat(2)手册页(在具有linux 2.6.32内核的主机上): 字段st_atim

在UNIX中使用
O_create
标志创建或打开文件时,文件的
st_mtime
st_ctime
st_atime
会发生更改。但是,当我使用
O_TRUNC
标志创建或打开文件时,只有
st_mtime
st_ctime
更改,而不是
st_time


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

这个问题有点老了,但至少对后代来说是一个答案

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

字段st_atime通过文件访问进行更改,例如,通过execve(2)、mknod(2)、pipe(2), utime(2)和read(2)(大于零字节)。其他例程,比如mmap(2),可能是也可能不是 更新时间

字段st_mtime通过文件修改进行更改,例如,通过mknod(2)、truncate(2), utime(2)和write(2)(大于零字节)。此外,目录的st_mtime由 在该目录中创建或删除文件。st_mtime字段不会因更改而更改 在所有者、组、硬链接计数或模式中

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

好吧,至少在linux上,仅仅打开一个文件(带有任何标志)不会改变时间。你能给出一个发生这种情况的代码示例吗?