首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

UNIX文件st_mtime改变的同时st_atime可以不变吗?解决方法

2012-03-27 
UNIX文件st_mtime改变的同时st_atime可以不变吗?看到APUE中总结有些函数会改变文件的st_mtime,却不会改变s

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。

热点排行