2013-03-03 50 views
0

修改過程開始(打開並寫入文件)或修改過程結束(關閉文件)時是否更新了mtime?是修改過程的開始時間還是結束時間

我在link找到了一些東西。

See man 2 stat for the semantics of mtime and ctime. In practice, the mtime and ctime will be updated in the in-memory copy of the inode and flushed out to disk asynchronously.

我覺得這個inode可能被刷新一次以上。如果這是真的。 這是否意味着修改過程中mtime可能會不止一次更新?

+0

它用每個''''更新。 – 2013-03-03 07:00:14

+0

@ n.m。真?你能給我一些參考嗎?謝謝 – louxiu 2013-03-03 07:10:59

+0

只需編寫一個簡單的程序,每秒鐘執行一次寫入和刷新。一個bash腳本會做。觀看結果。 – 2013-03-03 07:15:01

回答

1

從概念上講,每一個修改都發生在特定時刻。 mtime是最近這種事件的時間。

如果需要,您可以考慮對文件進行大量寫入,就好像它被分解爲一系列單個字節(或者,如果需要的話)的單獨寫入。每個單字節寫入都會瞬間發生。因此,在耗費大量時間的大寫之後,修改時間應反映大寫的最後部分完成的時間,即大寫的結束時間。

這是經常寫(write()pwrite()writev(),等...),它並不像cleear當一個文件被映射到內存(使用mmap()),並與文件映射相關的內存地址中的一個應該發生什麼更新。但在這種情況下,標準有答案。從Linux的mmap()聯機幫助頁:「在使用PROT_WRITE和MAP_SHARED映射的文件的st_ctime和st_mtime字段將在寫入映射區域之後,以及在MS_SYNC或MS_ASYNC標誌(如果發生)的後續msync(2)之前更新。

順便說一句(即使您打開文件進行寫入),打開文件並不算作修改。關閉文件也不算作修改。只有實際寫信給它。

相關問題