作者wlsabcd ()
看板LinuxDev
标题Re: [问题] 关於 file time
时间Mon May 28 21:41:58 2007
※ 引述《KvsG (KvsG)》之铭言:
: ※ 引述《coo1be (我不会开卡丁车啦)》之铭言:
: : 大家好 我是个使用 linux 的新手
: : 关於 file time 今天我在使用 stat 时候 突然发现几个问题无法解释 想请教大家
: : 1) 当我用 vim 开启一个档 接着不存档 离开 或
: : 2) cp 该档案
: : 以上两个动作 都不会动到原档案的 atime mtime ctime
: : 但我印象中 atime 应该要被变更才是阿 (因为 read)
: : 因此我想请问的是 上面那两个动作 在linux中 是怎麽被达成的呢
: : 居然不会动到 atime mtime ctime. 烦请大家解答 谢谢
: 我那时写这程式也有同样的问题... 不过後来我找到原因了...
: CreateTime & ModifyTime 很容易理解吧... AccessTime 跟我们的认知却不一样...
: Access 我们会以为是去读取的时间... 其实不是...
: Access 的意思是有去"动到 i-node 的时间" ...
: 所以你一直打开 执行 复制... aTime是不会变的...
: 你去 chmod chown ... aTime 就会变了...
: 印象中是这样啦.. ^^" 那时写 stat 的测试程式不知跑哪去了没得试...
: 如果不对请指正 ^^"
: 如果你是想知道一个档最後一次被读取/执行的时间的话...
: 说真的我也不知道... 找到资料的话交流一下吧... XD
翻了一下APUE 第一版 (Chapter 4.18, 4.19) 里面有很详细的解释,
(之前没用到都忘光了,感谢各位的发问让我有复习的机会)
这本书年代已经很久远了,但也应该不会错
File 的时间,可分为 st_atime, st_mtime, st_ctime
st_atime: last-access time of file data
档案内容最後被读取的时间,可由 ls -lu 观察到
st_mtime: last-modification time of the file data
档案内容最後被更改/读取的时间,可由 ls -l 观察到
st_ctime: last-change time of i-node status
i-node 最後被修改的时间,可由 ls -lc 观察到
这三的资料结构可以由 stat, fstat, lstat system call 得到。
所以C大、K大的问题,知道档案最後读取时间,可由 ls - lu 命令,
或者由程式中呼叫 stat, fstat, lstat 观察到。
========================================================================
另外,哪些 function 会更改这三个资料结构的的内容,以下列表
Funtion Referenced file Parent directly Note
of referenced file
---------------- -------------------
a m c a m c
---------------- -------------------
chmod, fchmod Y
chown, fchown Y
creat Y Y Y Y Y O_CREAT new file
creat Y Y O_TRUNC existing file
exec Y
lchown Y
link Y Y Y
mkdir Y Y Y Y Y
mkfifo Y Y Y Y Y
open Y Y Y Y Y O_CREAT new file
open Y Y O_TRUNC existing file
pipe Y Y Y
read Y
remove Y Y Y remove file = unlink
remove Y Y remove directly = rmdir
rename Y Y Y for both arguments
rmdir Y Y
truncate,ftruncate Y Y
unlink Y Y Y
utime Y Y Y
write Y Y
===============================================================================
还有直接修改 st_atime, st_mtime 的 system call: utime
===============================================================================
以上,和各位先进交流
ref: Advanced Programming in the UNIX Environment, 1st Edition
W. Richard Stevens
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 203.70.105.132
※ 编辑: wlsabcd 来自: 203.70.105.132 (05/28 21:52)
1F:推 andytzeng:非常详细..:) 05/28 22:38
2F:推 yhuiyang:推一下... 05/28 22:56
3F:推 CriLit:推推推 05/28 23:51
4F:推 neversay:这个赞,大推荐! 05/29 16:07
5F:推 KvsG:<(_ _)> 05/29 20:17
6F:推 coo1be:这本书必备阿 (其实我正在学XD) 05/30 23:15