我想在上次访问文件时获取,我尝试了以下代码:
import os, time
os.system("python test.py")
print os.stat('test.py').st_atime
time.sleep(60)
os.system("python test.py")
print os.stat('test.py').st_atime
Run Code Online (Sandbox Code Playgroud)
但每次输出相同如下:
1358489344.72
1358489344.72
Run Code Online (Sandbox Code Playgroud)
我预计在延迟之前和延迟之后输出会有所不同.也输出相同我每次都运行代码.
什么可能是错的?
字段st_atime由文件访问改变,例如,execve(2),mknod(2),pipe(2),utime(2)和read(2)(大于零字节).其他例程,如mmap(2),可能会也可能不会更新st_atime.
当你运行"python test.py"时,它不会调用read(2),而是调用mmap(2).这就是访问时间没有改变的原因.
这是"strace python test.py"的输出
open("test.py", O_RDONLY) = 3
fstat(3, {st_mode=S_IFREG|0644, st_size=36, ...}) = 0
mmap(NULL, 65536, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x2ad626cdd000
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3442 次 |
| 最近记录: |