1、stat主要函式
#include
#include
#include
int stat(const
char *path, struct stat *buf);
//在linux中,可以利用stat()函式來獲取乙個檔案的狀態
//這個函式執行成功返回0,失敗返回-1
//取得的檔案狀態存放在buf指標指向的struct stat結構提中
int fstat(int fd, struct stat *buf);
//fstat函式獲得已在描述符上開啟的檔案的有關資訊
int lstat(const
char *path, struct stat *buf);
//lstat函式類似於stat,但是當命名的檔案是乙個符號連線時
// lstat返回該符號連線的有關資訊,而不是由該符號連線引用的檔案的資訊
2、認識stat結構體
dev_t st_dev; /* 檔案的裝置編號 */
ino_t st_ino; /* inode number */
mode_t st_mode; /* 檔案的型別和訪問許可權 */
nlink_t st_nlink; /* number
of hard links */
uid_t st_uid; /* user id of owner */
gid_t st_gid; /* group id of owner */
dev_t st_rdev; /* device id (if special file) */
off_t st_size; /* 檔案位元組數 */
blksize_t st_blksize; /* blocksize for filesystem i/o */
blkcnt_t st_blocks; /* number
of512b blocks allocated */
time_t st_atime; /* time
oflast access */
time_t st_mtime; /* time
oflast modification */
time_t st_ctime; /* time
oflast status change */};
3、判斷檔案各類操作
st_mode是用特徵位來表示檔案型別的,特徵位的定義如下:
s_ifmt
0170000
檔案型別的位遮罩
s_ifsock
0140000
socket
s_iflnk
0120000
符號鏈結(symbolic link)
s_ifreg
0100000
一般檔案
s_ifblk
0060000
區塊裝置(block device)
s_ifdir
0040000
目錄s_ifchr
0020000
字元裝置(character device)
s_ififo
0010000
先進先出(fifo)
s_isuid
0004000
檔案的(set user-id on execution)位
s_isgid
0002000
檔案的(set group-id on execution)位
s_isvtx
0001000
檔案的sticky位
s_irwxu
00700
檔案所有者的遮罩值(即所有權限值)
s_irusr
00400
檔案所有者具可讀取許可權
s_iwusr
00200
檔案所有者具可寫入許可權
s_ixusr
00100
檔案所有者具可執行許可權
s_irwxg
00070
使用者組的遮罩值(即所有權限值)
s_irgrp
00040
使用者組具可讀取許可權
s_iwgrp
00020
使用者組具可寫入許可權
s_ixgrp
00010
使用者組具可執行許可權
s_irwxo
00007
其他使用者的遮罩值(即所有權限值)
s_iroth
00004
其他使用者具可讀取許可權
s_iwoth
00002
其他使用者具可寫入許可權
s_ixoth
00001
其他使用者具可執行許可權
判斷檔案型別時,用對檔案的st_mode的值與上面給出的值相與,再比較。
還有一種簡單的方法,利用系統提供好的巨集直接比較:巨集
功能s_islingk(st_mode)
判斷是否位符號鏈結
s_isreg(st_mode)
是否為一般檔案
s_isdir(st_mode)
是否為目錄
s_ischr(st_mode)
是否位字元裝置檔案
s_isblk(s3e)
是否先進先出
s_issock(st_mode)
是否為socket
檔案系統 stat函式
stat函式主要用於獲取檔案的inode資訊。stat命令其實就是呼叫的stat函式。1 chmod 777 stat 1.txtstat之後發現ctime變了。改變了檔案的許可權,檔案許可權儲存在inode裡面。2 vim stat 1.txt什麼都不做,看一下退出。stat後發現atime變了。...
LINUX檔案系統中的stat結構
stat結構的成員在不同的unix中會有所變化.但一般都包含以下所示的內容 st mode 檔案許可權和檔案型別資訊。st ino 與該檔案關聯的inode st dev 儲存檔案的裝置 st uid 檔案屬主的uid號 st gid 檔案屬主的gid號 st atime 檔案上次被訪問的時間 st...
linux之檔案系統
概述 1.應用層訪問具體檔案的層次圖 2.3.4.5.6.一 應用層訪問具體檔案的層次圖 結構圖 檔案與檔案系統的關係 從上圖中我們看出,檔案首先分類,歸屬於不同的檔案系統 檔案與程序之間的關係 程序與檔案的連線,即 已開啟檔案 是程序的私有財產,歸具體程序所有,那麼這種連線的file結構必然與程序...