Re: [問題] 關於 file time
※ 引述《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)
推
05/28 22:38, , 1F
05/28 22:38, 1F
推
05/28 22:56, , 2F
05/28 22:56, 2F
推
05/28 23:51, , 3F
05/28 23:51, 3F
推
05/29 16:07, , 4F
05/29 16:07, 4F
推
05/29 20:17, , 5F
05/29 20:17, 5F
推
05/30 23:15, , 6F
05/30 23:15, 6F
討論串 (同標題文章)
LinuxDev 近期熱門文章
PTT數位生活區 即時熱門文章