APUE 第四章 檔案和目錄

2021-08-27 12:18:19 字數 2183 閱讀 8779

本章主要圍繞stat這個函式來講的。

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

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

int lstat(const char* pathname, sttuct stat* buf); //如果是符號鏈結,返回符號鏈結的檔案資訊

struct stat;

檔案型別有普通檔案、目錄檔案、字元裝置檔案、塊裝置檔案、fifo檔案、socket檔案、符號鏈結七種檔案型別。儲存在stat結構中的st_mode中,分別有巨集可以測試檔案型別。

設定使用者id和設定組id

這兩個是許可權管理使用的。當設定了設定使用者id就會是執行使用者的有效使用者id設定成這個檔案的所有者,這樣執行這個使用者就獲得了,這個檔案所有者的許可權。設定組也是一樣的道理。一般是通過chmod +0xabc來設定使用者id和組id位的其中x=4 設定使用者id位,x=2設定組id位。這兩個位是儲存在st_mode中的,也有巨集可以測試這個位是否存在。

新檔案和目錄的訪問許可權:

新檔案的使用者id設定成程序的有效使用者id,組id或者是檔案所在目錄的id或者hi程序的有效使用者id。

int access(const char* pathname, int mode) //以實際使用者來檢視檔案許可權 mode 可以使r_ok (讀) w_ok(寫) x_ok(執行) f_ok(存在與否)

mode_t umask(mode_t cmask);//設定檔案模式建立遮蔽字。

int chmod(const char* pathname, mode_tmode);//給檔案賦許可權。

int fchmod(int fd ,mode_t mode);//給開啟的檔案賦許可權。

int chown(const char* pathname, uid_towner, gid_t group).//修改檔案的使用者id和組id

檔案空洞。

int truncate(const char* pathname, off_tlength)//把檔案截斷長度為length

int ftruncate(int fd, off_t length);

檔案系統:

上面這圖是整個檔案系統的概述。

上面這圖是目錄結構i節點和目錄項之間的關係。也可以檢視i節點和檔案的關聯(p87)

int link(const char* pathname, const char*newpath)		//建立乙個以pathname相同i節點的新目錄項

int unlink(const char* pathname) //刪除乙個目錄項

int remove(const char* pathname) //可以刪除檔案或者目錄。

int rename(const char* oldname, const char*newpath) //檔案更名

檔案時間

stat結構有st_atime(訪問時間[l1])、st_mtime(內容修改時間)、st_ctime(i節點資訊修改時間)

目錄操作

int mkdir(const char* pathnamer, mode_tmode)//建立乙個空目錄

int rmdir(const char* pathname)//刪除空目錄

dir* opendir(const char* pathname)

struct dirent* readdir(dir* dp);

closedir(dir* dp);

void rewinddir(dir* dp);

long telldir(dir* dp)

void seekdir(dir * dp, long loc)

APUE 第四章檔案和目錄

本章內容較多,本文只記錄在學習過程中所發現的問題,同時記錄所需掌握的linux方面知識.檔案型別 普通檔案 目錄檔案 塊特殊檔案 字元特殊檔案 fifo 套接字 符號鏈結 這裡要介紹下dos2unix命令,剛好前幾天在工作中有所接觸。dos2unix命令用來將dos格式的文字檔案轉換成unix格式的...

APUE筆記 第四章 檔案和目錄

功能 給定乙個pathname,stat函式返回乙個與此命名檔案有關的資訊結構,fstat函式獲得已在描述符filedes上開啟的檔案的有關資訊。lstat函式類似於stat,但是當命名的檔案是乙個符號連線時,lstat返回該符號連線的有關資訊,而不是由該符號連線引用的檔案的資訊。1 普通檔案 re...

第四章 檔案和目錄

1.函式stat,fstat,lstat,fststat int stat const char restrict pathname,struct stat restrict buf int fstat int fd,struct stat buf 2.檔案型別 普通檔案,目錄檔案,塊特殊檔案,字元...