tipos saber manejo leer hay directorios directorio cuantos crear carpetas archivos archivo abrir c directory size posix folders

saber - ¿Cómo obtengo el tamaño de un directorio en C?



saber cuantos archivos hay en un directorio c (2)

¿Hay una función POSIX que me dé el tamaño de un directorio (incluidas todas las subcarpetas), más o menos equivalente a " du -s somepath "?


No hay una función lista para usar, por lo que tendrá que hacer la suya propia. Puede ver el código fuente de la implementación GNU de du como ejemplo (consulte http://www.gnu.org/prep/ftp.html para obtener una lista de lugares desde donde descargar). Está en el paquete coreutils .

Las llamadas de Posix cruciales son probablemente opendir , readdir , closedir y stat .


$ man nftw

NOMBRE

ftw , nftw - árbol de archivo a pie

DESCRIPCIÓN

ftw() recorre el árbol de directorios que se encuentra en el directorio dirpath, y llama a fn() una vez para cada entrada en el árbol. De forma predeterminada, los directorios se manejan antes que los archivos y subdirectorios que contienen (pre-order crossing).

DE ACUERDO A

POSIX.1-2001, SVr4, SUSv1.

Ejemplo simple

#include <stdio.h> #include <errno.h> #include <unistd.h> #include <sys/types.h> #include <sys/stat.h> static unsigned int total = 0; int sum(const char *fpath, const struct stat *sb, int typeflag) { total += sb->st_size; return 0; } int main(int argc, char **argv) { if (!argv[1] || access(argv[1], R_OK)) { return 1; } if (ftw(argv[1], &sum, 1)) { perror("ftw"); return 2; } printf("%s: %u/n", argv[1], total); return 0; }