Linux系統IO目錄檔案操作

2021-10-09 04:16:33 字數 1343 閱讀 7068

linux目錄檔案 維護著乙個鍊錶的資料結構,目錄檔案的結構和單向鍊錶的節點的類似,可利用鍊錶的遍歷方法來實現目錄檔案遍歷.但是直接使用目錄流物件不會得到乙個鍊錶的節點(因為是流物件),需要配合readdir指令來移動流的當前位置指標,並獲得相應的鍊錶節點(目錄下的檔案的資訊)

#include

#include

//和流無關,目錄相關操作用

#include

目錄的基本操作單位, 1.

dir* dir =opendir([path]) ;

使用opendir函式,返回目錄檔案的結構體指標,指標指向目錄的第乙個檔案

2.struct dirent*  filelist  = readdir(dir);

重要的資訊排序:1.檔名 2.檔案型別 3.檔案長度 4.檔案的inode 5.下乙個dirent的偏移資訊(一般用不到,這裡是因為根據檔名的長度不同,分配的空間也不同,所以步長也不一樣).

通過readdir函式來獲取目錄結構體中儲存的檔案指標

目錄檔案的基本操作:

//所有和當前工作目錄有關的指令使用時,都需要考慮是否需要修改當前工作目錄

//更改目錄需要使用新的目錄的位址

1.獲取當前工作目錄

#include

char* getcwd(char* buf,size_t size);

2.更改當前工作目錄

int chdir(const char* path);

3.建立和刪除目錄

//當建立的目錄不存在時,需要賦予其許可權,但是也會受到umask的影響

建立 int mkdir(const char* path,mode_t mode);

刪除 int rmdir(const char* path);

4.開啟關閉目錄流

dir* dir = opendir(const char* path);

closedir(dir* dir);

5.從目錄流中獲取dirent資訊

struct dirent* pdirent  = readdir(dir* dir) 此時檔案流指標會向後移動乙個單位

6.由於其屬於流,具有流的性質,因此也擁有流的相應指標

返回當前流的位置

off_t telldir(dir* dir);

設定到相應流的位置

void seekdir(dir* dir,off_t offset); //會設定到指定位置的下乙個位置

重定位到目錄流的起始位置

void rewind(dir* dir);

linux系統IO操作

clib buff page cache disk cache include 開啟流 file fopen const char pathname,const char type 關閉流 int fclose file fp 重新整理流 int fflush file fp 一次讀寫乙個字元 in...

Linux系統程式設計 檔案IO操作

檔案描述符 在 linux 的世界裡,一切裝置皆檔案。我們可以系統呼叫中 i o 的函式 i input,輸入 o output,輸出 對檔案進行相應的操作 open close write read 等 開啟現存盤案或新建檔案時,系統 核心 會返回乙個檔案描述符,檔案描述符用來指定已開啟的檔案。這...

Linux檔案I O操作

可以呼叫l s e e k顯式地定位乙個開啟檔案。include include off t lseek int filesdes,off t offset,int whence 返回 若成功為新的檔案位移,若出錯為 1。對引數offset 的解釋與引數w h e n c e 的值有關。若whenc...