Linux裡stat命令與stat和lstat函式

2021-09-30 20:39:28 字數 2731 閱讀 2327

1.stat命令,可以獲取檔案的詳細資訊

命令列輸入:stat filename

2.stat函式

標頭檔案:

#include

#include

#include

介面:extern int stat (const char *__restrict __file,

struct stat *__restrict __buf)

引數:1.第乙個引數是要獲取資訊的檔案的名字

2.第二個引數是stat型別的結構體指標,用於儲存獲取的資訊

返回值:

成功則返回0,失敗則返回-1,並且將errno設定為對應的錯誤資訊

struct stat ;

struct timespec ;

測試**

//實現ls -l stat.txt

#include

#include

#include

#include

#include

#include

#include

#include

intmain

(int argc,

char

* ar**)

struct stat buf;

//stat(ar**[1],&buf); //獲取檔案資訊,並儲存到buf

lstat

(ar**[1]

,&buf)

;//檔案型別與許可權

char stmode[11]

=;memset

(stmode,

'-',10)

;if(s_isreg

(buf.st_mode)

) stmode[0]

='-'

;//普通檔案

elseif(

s_isdir

(buf.st_mode)

) stmode[0]

='d'

;//目錄檔案

elseif(

s_ischr

(buf.st_mode)

) stmode[0]

='c'

;//字元裝置

elseif(

s_isblk

(buf.st_mode)

) stmode[0]

='b'

;//塊裝置

elseif(

s_isfifo

(buf.st_mode)

) stmode[0]

='p'

;//管道

elseif(

s_islnk

(buf.st_mode)

) stmode[0]

='l'

;//鏈結符號

elseif(

s_issock

(buf.st_mode)

) stmode[0]

='s'

;//socket檔案

//解析許可權

if(buf.st_mode & s_irusr)

stmode[1]

='r';if

(buf.st_mode & s_iwusr) stmode[2]

='w';if

(buf.st_mode & s_ixusr) stmode[3]

='x';if

(buf.st_mode & s_irgrp)

stmode[4]

='r';if

(buf.st_mode & s_iwgrp) stmode[5]

='w';if

(buf.st_mode & s_ixgrp) stmode[6]

='x';if

(buf.st_mode & s_iroth)

stmode[7]

='r';if

(buf.st_mode & s_iwoth) stmode[8]

='w';if

(buf.st_mode & s_ixoth) stmode[9]

='x'

;//獲取時間

struct tm *filetime =

localtime

(&buf.st_atim.tv_sec)

;char timebuf[20]

=;sprintf

(timebuf,

"%d月 %d %02d:%02d"

, filetime->tm_mon+

1, filetime->tm_mday,

filetime->tm_hour,filetime->tm_min)

;printf

("%s %ld %s %s %ld %s %s\n"

, stmode, buf.st_nlink,

getpwuid

(buf.st_uid)

->pw_name,

getgrgid

(buf.st_gid)

->gr_name,

buf.st_size,

timebuf, ar**[1]

);//getpwuid() 獲取使用者名稱, getgrgid() 獲取組名

return0;

}

結果

解析Linux下的stat命令

如圖所示會顯示3種不同型別的時間,分別是 最近訪問時間 access time 最近更改時間 modify time 最近改動時間 change time 最近訪問時間 access time 表示最後一次訪問 僅僅是訪問 檔案的時間 最近更改時間 modift time 表示最後一次修改檔案的時間...

linux作業系統下的 stat命令

有些時候,我們需要在linux中使用stat命令來檢視檔案的詳細資訊。我們先來看下stat的情況 如圖所示,會出現3個型別的時間,分別是access,modify,change。下面我們就對這3個時間進行詳細解釋下 access time 表示我們最後一次訪問 僅僅是訪問,沒有改動 檔案的時間 mo...

linux命令stat,檢視檔案詳細資訊

可以檢視檔案的各類具體資訊 檔案許可權的數字形式0664 uid gid的許可權的數字形式等 lsattr test.sh 檢視檔案的其他屬性 唯讀屬性 只可以追加寫屬性等 linux chattr命令用於改變檔案屬性。這項指令可改變存放在ext2檔案系統上的檔案或目錄屬性,這些屬性共有以下8種模式...