1

Добрый день , гугель ничего не дал по запросу как в Linux подсчитать размер каталога . С файлом проблем нет вот решение , но оно не подходит для каталога.

#include <iostream>
#include <sys/stat.h>
using namespace std;
 
int FileSize(const char *filename){
struct stat file_stat;
stat(filename,&file_stat);
cout<<file_stat.st_size<<endl;
}
 
int main(){
FileSize("/home");
return 0;
}
 
 

2

Решение

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

int main() {
    DIR *dir;// для работы с файлами переменная типа дир
    struct dirent *entry;

    dir = opendir("/");
    if (!dir) {
        perror("diropen");
        return(1);
    };

    while ( (entry = readdir(dir)) != NULL) {
        printf("%d - %s [%d] %d\n",
            entry->d_ino, entry->d_name, entry->d_type, entry->d_reclen);
    };

    closedir(dir);
};

3

Именно размер директории не выдает , только имя и еще 3 параметра. Так и не нашел решение такой на первый взгляд простой проблемы.

4

ещё раз, что по твоему «размер директории»?
stat.st_size выдаёт вполне корректный результат, правда и зависящий от ФС и, возможно, её реализации и системы...

95% процентов проблем находятся между клавиатурой и стулом.

5 (20.02.2013 11:27:46 отредактировано l_cho)

ещё раз, что по твоему «размер директории»?

Размер папки , Размер каталога

#include <iostream>
#include <sys/stat.h>
using namespace std;

int FileSize(const char *filename){
struct stat file_stat;
stat(filename,&file_stat);
cout<<file_stat.st_size<<endl;
}

int main(){

FileSize("/mnt");
return 0;
}

Вывод 4096 , а размер там гигов за 100 переволил

6 (20.02.2013 14:18:07 отредактировано zenon)

l_cho пишет:

Размер папки , Размер каталога

Его посчитать ещё надо, или забыл, что каталог это файл?

История показывает, что во всем новом обычно кроется какой-то подвох.
Классическая ошибка, которую совершают проектировщики
абсолютно надежных систем, - недооценка изобретательности клинических идиотов.

7

bu  Жестко туплю , MAN зачитал все понял. Спасибо