Programmer la commande ls -l en C

maxence57590 Messages postés 4 Statut Membre -  
maxence57590 Messages postés 4 Statut Membre -
Bonjour,
Dans le cadre d'un projet, je voudrais afficher les différents type de fichier dans un répertoire (executable, text, etc...).
J'arrive a afficher les fichiers avec "opendir" mais j’arrête pas de chercher et je trouve rien pour comment afficher le types des fichiers... Si quelqu'un a une idée a proposer, merci d'avance.
A voir également:

4 réponses

jisisv Messages postés 3678 Statut Modérateur 935
 
Un fichier régulier est bien différent d'un lien symbolique , d'un tube nommé ou d'une entrée de périphérique (caractère, bloc).

<ital>struct dirent {
ino_t d_ino; /* inode number */
off_t d_off; /* not an offset; see NOTES */
unsigned short d_reclen; /* length of this record */
unsigned char d_type; /* type of file; not supported
by all filesystem types */
char d_name[256]; /* filename */
}</itall>

L'entrée d_type contient le type d'entrée.

Voir
man 3 readdir


Pour déterminer les types de fichiers, regarde du côté de libmagic
1
maxence57590 Messages postés 4 Statut Membre
 
Un grand MERCI, ça m'aide réellement, je sens que je suis pas loin du but souhaiter !
0
KX Messages postés 19031 Statut Modérateur 3 020
 
Bonjour,

Le "type d'un fichier" ça n'existe pas. Tous les fichiers sont une série d'octets, il n'y a pas de différence.

Selon le système d'exploitation tu peux avoir des notions d'extensions ou de droits d'exécutions qui te permettent de rajouter des informations supplémentaires. Mais rien de généralisable.
0
maxence57590 Messages postés 4 Statut Membre
 
Dans se cas, comment faire pour afficher les extensions ?
0
KX Messages postés 19031 Statut Modérateur 3 020
 
L'extension du fichier est dans son nom.

En soit un fichier n'a pas d'extension, c'est juste la fin de son nom qui introduit cette notion mais ce n'est qu'une indication, ça n'a aucune valeur, on peut renommer un fichier image en .exe ça ne fait pas de lui un fichier exécutable.
0
fiddy Messages postés 11653 Statut Contributeur 1 847
 
Les extensions n'ont de sens que sur Windows.
Si tu parles de "ls -l", tu es probablement sur GNU/Linux. Oublie donc cette histoire d'extension.

ls -l ne donne pas le type de fichier. Il affichera juste s'il s'agit d'un répertoire ou pas... En revanche, il affichera aussi les droits du fichier (lecture, écriture, etc.).

Est-ce bien ls -l que tu souhaites reproduire ?
0
maxence57590 Messages postés 4 Statut Membre
 
Je dois faire les deux enfaite, savoir si les fichiers présent dans un répertoire est un exécutable, un ficher texte ou un répertoire puis également connaitre les droits du fichier.
0