PDF de programación - Capítulo 23. Trabajo con directorios

Capítulo 23. Trabajo con directoriosgráfica de visualizaciones

Publicado el 17 de Julio del 2017
388 visualizaciones desde el 17 de Julio del 2017
59,4 KB
2 paginas
Creado hace 9a (31/07/2014)
Capítulo 23. Trabajo con directorios

23.1. Objetivos

Manipular directorios, obtener información sobre ficheros y examen de un pequeño programa
recursivo. Utilización de un depurador para seguir un programa.

23.2. Documentación de las transparencias

Las transparencias relevantes para realizar esta práctica son:
- Páginas 43-46 de las transparencias de C
- Páginas 51-52 de las transparencias de Bibliotecas de C y llamadas al sistema

23.3. Requisitos

Estudio de las operaciones de directorio: llamada al sistema (getdents) y rutinas de conveniencia
(opendir, closedir, readdir, etc), de las de obtener información sobre un fichero (stat, lstat
y fstat), y del depurador.

23.4. Especificación

Estudie el siguiente programa, arbol.c , que lista recursivamente los directorios que se le pasan
como parámetros.

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

int nivel = 0;

void tree (char* path)

{

DIR* dirp;
struct dirent* dp;
if ((dirp = opendir (path)) == NULL) {

perror (path);
return;

}
while ((dp = readdir (dirp)) != NULL) {

struct stat buf;
char fichero [PATH_MAX];
int i;
if ((strcmp (dp->d_name, ".") == 0)

|| (strcmp (dp->d_name, "..") == 0))

continue;

sprintf (fichero, "%s/%s", path, dp->d_name);
for (i = 0; i < nivel; i ++)

printf ("

");

1

Capítulo 23. Trabajo con directorios

printf ("%s\n", dp->d_name);
if (lstat (fichero, & buf) == -1) {

perror(fichero);
exit(1);

}
if ((buf.st_mode & S_IFMT) == S_IFDIR) {

nivel++;
tree (fichero);
nivel--;

}

}
closedir (dirp);

}

int main (int argc, char* argv []) {

int i;
if (argc == 1) tree (".");
else

for (i = 1; i < argc; i++)tree (argv[i]);

}

• Sitúese en su directorio de trabajo con cd y ejecútelo sin parámetros y con diversos parámetros,

para comprender su funcionamiento. Puede probar con ., .., /bin, /boot, ambos (/boot
/bin), etc.

• Sígalo con un depurador (gdb o ddd), pasándole como argumento un directorio con subdirectorios

(por ejemplo /etc). Sigalo paso a paso y poniendo puntos de parada. Vea el contenido de
variables relevantes, incluidas las asignadas automáticamente en la pila en las llamadas recursivas.

• Modifíquelo para que además de nombre del fichero o directorio muestre el número de inodo.

Utilice el depurador para ayudarse.

23.5. Ficheros ofrecidos

En el directorio dir:

• Programa arbol.c.
• Una solución compilada: arbol2.

23.6. Resultados pedidos

• El módulo fuente: arbol2.c.

2
  • Links de descarga
http://lwp-l.com/pdf5446

Comentarios de: Capítulo 23. Trabajo con directorios (0)


No hay comentarios
 

Comentar...

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios...
CerrarCerrar
CerrarCerrar
Cerrar

Tienes que ser un usuario registrado para poder insertar imágenes, archivos y/o videos.

Puedes registrarte o validarte desde aquí.

Codigo
Negrita
Subrayado
Tachado
Cursiva
Insertar enlace
Imagen externa
Emoticon
Tabular
Centrar
Titulo
Linea
Disminuir
Aumentar
Vista preliminar
sonreir
dientes
lengua
guiño
enfadado
confundido
llorar
avergonzado
sorprendido
triste
sol
estrella
jarra
camara
taza de cafe
email
beso
bombilla
amor
mal
bien
Es necesario revisar y aceptar las políticas de privacidad