檔案時間與系統時間

2021-07-02 22:36:56 字數 1346 閱讀 3206

每個檔案是有三個時間的,分別是st_atime,st_mtime和st_ctime。

st_atime: 最後一次訪問時間,如果使用read函式讀某個檔案,會改變檔案的這個時間

st_mtime:最後一次修改時間,如果使用write函式寫某個檔案,會改變檔案的這個時間

st_ctime:最後一次修改檔案許可權時間,如果使用chmod修改了檔案的許可權,會改變這個時間

怎樣獲取這三個時間呢?

使用stat族函式,man 2 stat可以檢視這一族函式,有stat,fstat,lstat

[plain]view plain

copy

int stat(const char *path, struct stat *buf);  

int fstat(int fd, struct stat *buf);  

int lstat(const char *path, struct stat *buf);  

從函式原型可知,stat函式第乙個引數需要乙個位址,第二個引數需要乙個結構體指標,  

下面我們寫個程式來獲取當前檔案的mtime, 同時獲取當前的系統時間.  

int main(void)  

fstat(fd, &stbuf);  

localtime_r(&stbuf.st_mtime, &filetime);//使用localtime_r函式將檔案的mtime存放到filetime中  

time(&now);                             //獲取當前系統時間  

localtime_r(&now, &nowtime);            //將系統時間存放到nowtime中  

printf("file tm_min is [%d] tm_sec is [%d]\n", filetime.tm_min, filetime.tm_sec, filetime);  

printf("now tm_min is [%d] tm_sec is [%d]\n", nowtime.tm_min, nowtime.tm_sec, nowtime);  

return 0;  

}

其中的localtime_r是將time_t的時間轉化為tm結構體的時間,更方便我們閱讀,且儲存在我們要求的位址中

還有另乙個函式localtime,功能是一樣的,但是它只有乙個引數,它會自動分配乙個空間存放轉化為tm結構體的時間

這樣就會遇到乙個問題,如果要使用兩次或以上localtime,只能儲存最後乙個呼叫函式時轉化的時間!

另外stat可以獲取大量有關檔案的資訊,可以自行查閱manpage

系統時間與硬體時間

系統時間 system time 一般說來就是我們執行 date命令看到的時間,linux系統下所有的時間呼叫 除了直接訪問硬體時間的命令 都是使用的這個時間。硬體時間 hardware time 主機板上bios中的時間,由主機板電池供電來維持執行,系統開機時要讀取這個時間,並根據它來設定系統時間...

Linux系統時間與硬體時間及時間同步

root web176 date fri nov 6 14 21 29 cst 2020 root web176 date s 10 10 10 fri nov 6 10 10 10 cst 2020 root web176 date fri nov 6 10 10 14 cst 2020設定系統時...

Linux系統時間與硬體時間及時間同步

linux系統有系統時間和硬體時間之分 系統時間 一般說來就是我們執行 date命令看到的時間,linux系統下所有的時間呼叫 除了直接訪問硬體時間的命令 都是使用的這個時間。硬體時間 主機板上bios中的時間,由主機板電池供電來維持執行,系統開機時要讀取這個時間,並根據它來設定系統時間 注意 系統...