Linux 檔案系統之stat函式

2021-08-21 16:48:04 字數 2784 閱讀 2118

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結構必然與程序...