Programmer la commande ls -l en C

Fermé
maxence57590 Messages postés 4 Date d'inscription samedi 12 décembre 2015 Statut Membre Dernière intervention 12 décembre 2015 - 12 déc. 2015 à 15:44
maxence57590 Messages postés 4 Date d'inscription samedi 12 décembre 2015 Statut Membre Dernière intervention 12 décembre 2015 - 12 déc. 2015 à 23:46
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.

4 réponses

jisisv Messages postés 3645 Date d'inscription dimanche 18 mars 2001 Statut Modérateur Dernière intervention 15 janvier 2017 934
12 déc. 2015 à 17:48
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 Date d'inscription samedi 12 décembre 2015 Statut Membre Dernière intervention 12 décembre 2015
12 déc. 2015 à 19:43
Un grand MERCI, ça m'aide réellement, je sens que je suis pas loin du but souhaiter !
0
KX Messages postés 16734 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 24 avril 2024 3 015
12 déc. 2015 à 15:50
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 Date d'inscription samedi 12 décembre 2015 Statut Membre Dernière intervention 12 décembre 2015
12 déc. 2015 à 16:20
Dans se cas, comment faire pour afficher les extensions ?
0
KX Messages postés 16734 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 24 avril 2024 3 015
12 déc. 2015 à 16:26
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 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 835
12 déc. 2015 à 23:00
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 Date d'inscription samedi 12 décembre 2015 Statut Membre Dernière intervention 12 décembre 2015
12 déc. 2015 à 23:46
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