UNIX文件st_mtime改变的同时st_atime可以不变吗?
看到APUE中总结有些函数会改变文件的st_mtime,却不会改变st_atime,查了一些资料说st_atime只有在最后一次文件被读取的情况下才会被修改。
但是我的直观感受是如果修改了文件的数据,导致st_mtime改变,修改的同时肯定也访问了文件啊(修改的前提不就是需要访问吗),那最后访问时间st_atime不也应该随着改变吗?
第二个问题就是对于任意一个文件,如果函数通过路径名访问,比如访问/usr/include/stdio.h,最终在/usr/include目录中找到该文件,这个是对该目录的一种访问吗?目录的st_atime需要修改吗?
[解决办法]
1.那么你考虑一个文件会有多个进程打开的情况么?
2.我觉得不需要修改。如果你只是单纯的查找的话
[解决办法]
试验了一下
1、查看/usr/include当前的访问时间,表示为t1
ls -lud /usr/include
2、ls其中的一个文件后,再查看访问时间,表示为t2
ls /usr/include/stdio.h
ls -lud /usr/include
3、ls目录本身,再查看访问时间,表示为t3
ls /usr/include
ls -lud /usr/include
发现:t1和t2是相同的,而与t3不同
[解决办法]
给楼主讲个简单记忆法吧, 只看不改变atime, 修改同时变ctime和mtime。