Рекурсивный путь к каталогу с функцией nftw в C
Я пытаюсь использовать nftw()
функция для расчета размера каталога по сумме некоторых файлов. Но как мне обработать сумму, если я не могу использовать глобальные переменные для хранения суммы размеров, и мне нужно использовать функцию nftw()
?
1 ответ
Я исследовал, и это правда, что нет способа передать параметр в функцию nftw для хранения суммы. Но я нашел решение, но я не знаю, если это очень хорошо.
Мое решение использует "вложенную функцию", как показано ниже:
int aux (char * name, int fd_limit, int flags) {
int sum = 0;
int nftwfunc (const char* filename, const struct stat* statptr, int fileflags, struct FTW* pfwt) {
sum + = statptr-> st_size;
}
nftw (name, nftwfunc, fd_limit, flags);
return sum;
}