溫馨提示×

如何使用Linux readdir遍歷目錄

小樊
36
2025-09-01 14:23:34
欄目: 智能運維

在 Linux 中,readdir 函數用于遍歷目錄中的文件和子目錄。以下是一個簡單的示例,展示了如何使用 readdir 遍歷目錄:

#include <stdio.h>
#include <stdlib.h>
#include <dirent.h>
#include <string.h>

int main(int argc, char *argv[]) {
    DIR *dir;
    struct dirent *entry;

    // 檢查命令行參數
    if (argc != 2) {
        fprintf(stderr, "Usage: %s <directory>\n", argv[0]);
        return EXIT_FAILURE;
    }

    // 打開目錄
    dir = opendir(argv[1]);
    if (dir == NULL) {
        perror("opendir");
        return EXIT_FAILURE;
    }

    // 遍歷目錄中的文件和子目錄
    while ((entry = readdir(dir)) != NULL) {
        printf("%s\n", entry->d_name);
    }

    // 關閉目錄
    closedir(dir);

    return EXIT_SUCCESS;
}

編譯并運行此程序,如下所示:

gcc -o listdir listdir.c
./listdir /path/to/directory

這將輸出指定目錄中的所有文件和子目錄。

解釋

  1. 包含頭文件

    • #include <dirent.h>:包含 readdir 函數和其他相關結構體的定義。
    • #include <stdio.h>#include <stdlib.h>:包含標準輸入輸出和標準庫函數。
  2. 檢查命令行參數

    • 確保程序接收到一個目錄路徑作為參數。
  3. 打開目錄

    • 使用 opendir 函數打開指定路徑的目錄,并返回一個 DIR 指針。如果打開失敗,返回 NULL。
  4. 遍歷目錄

    • 使用 readdir 函數讀取目錄中的每個條目,并將其存儲在 dirent 結構體中。循環繼續直到 readdir 返回 NULL。
  5. 關閉目錄

    • 使用 closedir 函數關閉目錄。

注意事項

  • readdir 返回的 dirent 結構體包含多個字段,其中 d_name 是文件或目錄的名稱。
  • readdir 返回的條目順序是不確定的,除非目錄中的條目數量很少。
  • 處理符號鏈接時要小心,因為 readdir 可能會返回符號鏈接本身而不是它指向的目標。

通過這種方式,你可以使用 readdir 函數遍歷目錄并處理其中的文件和子目錄。

0
亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女