文章目录
- 文件时间-acm
- Access
- Change
- Modify
文件时间-acm
我们可以使用stat 文件名
的方式查看对应的文件的时间信息
Access
- 表示文件最近一次被访问的时间
文件的访问 实际也就是文件的读取
实际操作中,文件的Access时间可能没有变化,这是因为在新的Linux内核中,Access时间不会被立即更新,而是经过一定的时间间隔,OS才会自动进行更新, 因为查看文件和读取文件是比较频繁的事情,如果频繁的去更新时间,就可能存在刷盘的问题,会让我们的Linux系统变得卡顿
Change
- 表示最近一次修改文件属性的时间
例子:
Modify
- 表示最近一次修改文件内容的时间
实际上,当我们修改文件内容的时候,有可能也会修改文件的属性->如:文件的大小,导致Modify实际和Change实际一起发生改变
当我们修改文件内容时,文件的大小一般也会随之改变,所以一般情况下Modify的改变会带动Change一起改变,但修改文件属性一般不会影响到文件内容,所以一般情况下Change的改变不会带动Modify的改变
问:Makefile怎么判定源文件是否被修改过呢? 从而知道系统的源文件是否需要重新编译,
就是通过对比 源文件和生成的可执行程序的Modify时间
结论: makefile和gcc会根据时间问题,来判定源文件和可执行程序谁更新,从而指导系统哪些源文件需要被重新编译
问:为什么
.PHONY
定义的伪目标总是可以被执行
本质就是不关心时间谁先谁旧,直接编译
注意:当我们touch一个已经存在的文件,会更新文件时间(把3个时间都更新为现在时刻的时间,然后源文件的时间就比可执行程序更加新),这样即使内容没有任何修改,此时就可以重新编译了