Рекурсивный путь к каталогу с функцией 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;

}
Другие вопросы по тегам