温馨提示×

linux opendir如何获取目录大小

小樊
81
2024-12-29 03:02:14
栏目: 智能运维

在Linux中,opendir()函数用于打开一个目录

#include <dirent.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <stdio.h>

long long get_directory_size(const char *dir) {
    DIR *d = opendir(dir);
    if (d == NULL) {
        perror("Error opening directory");
        return -1;
    }

    long long size = 0;
    struct dirent *entry;

    while ((entry = readdir(d)) != NULL) {
        struct stat st;
        lstat(entry->d_name, &st);

        if (S_ISDIR(st.st_mode)) {
            size += get_directory_size(entry->d_name);
        } else {
            size += st.st_size;
        }
    }

    closedir(d);
    return size;
}

int main() {
    const char *dir = "."; // Replace with the desired directory path
    long long dir_size = get_directory_size(dir);

    if (dir_size >= 0) {
        printf("Directory size: %lld bytes\n", dir_size);
    }

    return 0;
}

这个程序首先使用opendir()打开一个目录,然后遍历目录中的所有文件和子目录。对于每个文件,它使用lstat()获取文件的状态信息,然后根据文件类型(目录或普通文件)更新总大小。最后,程序关闭目录并使用返回的总大小。

0