Linux 高階程式設計 目錄操作

2021-08-04 23:45:22 字數 2499 閱讀 9066

在 linux 下一切皆是檔案。目錄也是檔案,在glibc中定義了一些對目錄項的操作,例如使用opendir開啟目錄,readdir讀取目錄項等等,這篇文章介紹 linux 目錄相關的概念和操作。

就像檔案有專門的資料結構表示一樣,目錄項在核心中也有相關表示。

#include 

/* 目錄結構體 */

struct dirent ;

目錄項名稱(檔名)儲存在d_name欄位中。

就像file代表檔案流一樣,dir資料結構代表了乙個目錄流,這個結構定義在dirent.h中。

注意:你不需要主動為這些資料結構分配記憶體,目錄的操作函式會完成記憶體的分配,你只需要在程式中使用指標引用就可以了。

下面介紹一些常用的操作目錄的 api。

首先來學習如何開啟和關閉並讀取乙個目錄:

#include 

#include

/* * name: 目錄名

* return: 成功返回目錄流指標,失敗返回 null,並設定 errno

*/dir *opendir(const

char *name);

/* * dirp:目錄流指標

* return:成功返回 0, 失敗返回 -1, 並設定 errno

*/int closedir(dir *dirp);

/* * dirp:目錄流指標

* return:成功返回目錄結構指標,失敗返回空

*/struct dirent *readdir(dir *dirp);

看乙個開啟和關閉目錄的例子:

// list_dir.c

#include

#include

int main()

return

0;}

編譯執行,可以看到程式列出了當前檔案下的檔名。

chdir用來改變呼叫程序的工作目錄。

#include 

/* * path:要改變的工作路徑

* return:成功返回 0, 失敗返回 -1

*/int chdir(const

char *path);

getcwd用來獲取當前程序工作路徑:

#include 

/* * buf:儲存當前工作目錄的緩衝區

* size:緩衝區的長度

* return:成功返回指向當前工作目錄的指標,失敗返回 null,並設定 errno

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

來看個實際的例子:

// test_chdir.c

#include

#include

int main(void) ;

printf("cur dir: %s\n", getcwd(buf, sizeof(buf)));

if (0 == chdir("/home"))

printf("change dir success.\n");

printf("cur dir: %s\n", getcwd(buf, sizeof(buf)));

return

0;}

編譯執行結果:

cur dir: (null)

change dir success.

cur dir: /home

工作路徑成功修改了!

shellmkdir可以建立目錄,在 c 庫中也有同名的庫函式可以使用,來看看使用方法:

#include 

#include

/* * pathname: 要建立的目錄路徑

* mode:目錄許可權

* return:成功返回 0, 失敗返回 -1

*/int mkdir(const

char *pathname, mode_t mode);

例如下面的程式建立hello_test目錄:

// test_mkdir.c

#include

#include

#include

int main(void)

最後,感謝你的閱讀,我們下次再見 :)

《unix高階環境程式設計》檔案和目錄 目錄操作

目錄的基本操作包括開啟目錄opendir 讀取目錄readdir 關閉目錄closedir等操作,如下說明 cpp view plain copy 目錄操作 1 開啟目錄opendir 函式功能 開啟乙個目錄 返回值 若成功返回乙個目錄指標,若出錯則返回null指標 函式原型 include inc...

Linux程式設計實踐目錄操作

使用者登入後,可以對自己的檔案進行操作。檔案被組織在目錄中 目錄 目錄樹目錄操作命令 列出目錄內容 ls 改變當前目錄 cd 顯示當前目錄 pwd 新建 刪除 目錄 mkdir rmdir 目錄操作命令的工作原理 檔案系統的最頂端是 根目錄。大多數 unix 系統都在根目錄下有 etc home b...

03 Linux目錄與檔案高階操作

第三課 目錄與檔案高階操作 cat 一次性全部輸出檔案內容 cat n 檔名 顯示行號 cat b 檔名 空行不顯示行號 less 分頁顯示,可以上下翻頁,游標鍵上下鍵,pageup pagedown less n 檔名 顯示行號 tail 從檔案末尾處顯示,預設為10行 tail 數字 檔名 指定...