Programar el comando ls -l en C

maxence57590 Mensajes publicados 4 Estado Miembro -  
maxence57590 Mensajes publicados 4 Estado Miembro -
Hola,
En el marco de un proyecto, me gustaría mostrar los diferentes tipos de archivos en un directorio (ejecutable, texto, etc...).
Puedo mostrar los archivos con "opendir" pero no dejo de buscar y no encuentro nada sobre cómo mostrar los tipos de archivos... Si alguien tiene una idea que proponer, gracias de antemano.

4 respuestas

jisisv Mensajes publicados 3678 Estado Moderador 936
 
Un archivo regular es muy diferente de un enlace simbólico, de un tubo nombrado o de una entrada de dispositivo (carácter, bloque).

<ital>struct dirent {
ino_t d_ino; /* número de inodo */
off_t d_off; /* no es un desplazamiento; ver NOTAS */
unsigned short d_reclen; /* longitud de este registro */
unsigned char d_type; /* tipo de archivo; no es soportado
por todos los tipos de sistemas de archivos */
char d_name[256]; /* nombre de archivo */
}</itall>

La entrada d_type contiene el tipo de entrada.

Ver
man 3 readdir


Para determinar los tipos de archivos, consulta libmagic

--
Gates te dio ^W te vendió las ventanas.
GNU nos dio toda la casa. (Alexandrino)
1
maxence57590 Mensajes publicados 4 Estado Miembro
 
¡Un gran GRACIAS, realmente me ayuda, siento que no estoy lejos de la meta deseada!
0
KX Mensajes publicados 19031 Estado Moderador 3 020
 
Hola,

El "tipo de un archivo" no existe. Todos los archivos son una serie de bytes, no hay diferencia.

Según el sistema operativo, puedes tener nociones de extensiones o derechos de ejecución que te permiten añadir información adicional. Pero nada que se pueda generalizar.
--
La confianza no excluye el control.
0
maxence57590 Mensajes publicados 4 Estado Miembro
 
En ese caso, ¿cómo hacer para mostrar las extensiones?
0
KX Mensajes publicados 19031 Estado Moderador 3 020
 
La extensión del archivo está en su nombre.

En sí, un archivo no tiene extensión, es solo el final de su nombre lo que introduce esta noción, pero es solo una indicación, no tiene ningún valor, podemos renombrar un archivo de imagen como .exe y eso no lo convierte en un archivo ejecutable.
0
fiddy Mensajes publicados 441 Fecha de registro   Estado Colaborador Última intervención   1 847
 
Las extensiones solo tienen sentido en Windows.
Si hablas de "ls -l", probablemente estés en GNU/Linux. Así que olvida esta historia de extensión.

ls -l no muestra el tipo de archivo. Solo indicará si se trata de un directorio o no... Sin embargo, también mostrará los permisos del archivo (lectura, escritura, etc.).

¿Es realmente ls -l lo que deseas reproducir?
--

Google es tu amigo
0
maxence57590 Mensajes publicados 4 Estado Miembro
 
Debo hacer las dos cosas, saber si los archivos presentes en un directorio son un ejecutable, un archivo de texto o un directorio, y también conocer los derechos del archivo.
0