Unix 文件创建/打开对存储时间和存储时间的影响
在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
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上,仅仅打开一个文件(带有任何标志)不会改变时间。你能给出一个发生这种情况的代码示例吗?