| Ver tema anterior :: Ver siguiente tema | | Autor | Mensaje |
|---|
daiaa.
Registrado: 01 Feb 2013 Mensajes: 1
| Publicado: 01/02/2013 6:35 pm | | | Título: archivos Ext2 |
| hola estoy hace 5 dias intentanto hacer este programa que no me sale.. tengo que detallar por salida estandar las entradas de directorios, indicando los inodos por cada entrada el nuemro de inodo, estuve haciendo este codigo que pogo mas abajo pero no me funciona.. nose como hacer y necesito ayuda por favor..
ESTE ES EL CODIGO
#include <stdio.h> #include <stdlib.h> #include <dirent.h>
int main( int argc, char *argv[] ) { DIR *dir; struct dirent *mi_dirent;
if( argc != 2 ) { printf( "%s: %s directorio\n", argv[0], argv[0] ); exit( -1 ); }
if( (dir = opendir( argv[1] )) == NULL ) { perror( "opendir" ); exit( -1 ); }
while( (mi_dirent = readdir( dir )) != NULL ) printf( "%s\n", mi_dirent->d_name );
closedir( dir );
return 0; }
Y SE SUPONE QUE CUANDO LO EJECUTE CON UN DIRECTORIO ME QUEDARIA ASI
txipi@neon:~$ gcc dirs.c -o dirs txipi@neon:~$ ./dirs ./dirs: ./dirs directorio txipi@neon:~$ ./dirs . . .. files.c files stat.c stat makefile clean getcwd.c getcwd directorios.c dirs.c prueba directorio2 dirs
PERO EN REALIDAD ME DICE QUE NO ES UN DIRECTORIO  |
| | Volver arriba | |  | daltomi
Registrado: 28 Abr 2007 Mensajes: 335 Ubicación: Argentina
| Publicado: 03/02/2013 8:42 pm | | | Título: |
| Buenas.
Debes utilizar la func. stat y la macro S_ISDIR para diferenciar entre un directorio o un archivo regular. Puedes obtener el inode desde la estructura dirent->d_ino, o desde stat->st_ino
Ejemplo:
| Código: | int main(int argc, char** argv ) { struct dirent* dir_entry; struct stat st; const string dir_name( argv[1] );
DIR* directory = opendir( dir_name.c_str() );
while( (dir_entry = readdir(directory) ) != NULL ) { string stat_name( dir_name + dir_entry->d_name);
stat( stat_name.c_str() , &st); if( S_ISDIR(st.st_mode) ) //es un directorio ? { cout << "Nombre: " << stat_name << " - inode: " << st.st_ino << endl; } } closedir(directory); }
|
Observa el uso de otras funciones como lstat y las otras macros como S_ISREG, etc. Para +info utiliza el buscador del sitio, con la palabra opendir, podrás ver otros ejemplos más elaborados.
Saludos. |
| | Volver arriba | |  | | |
| No puede crear mensajes No puede responder temas No puede editar sus mensajes No puede borrar sus mensajes No puede votar en encuestas
|
|
| |