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.

4 réponses

  1. jisisv Messages postés 3678 Statut Modérateur 936
     
    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
    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
  2. 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
  3. maxence57590 Messages postés 4 Statut Membre
     
    Dans se cas, comment faire pour afficher les extensions ?
    0
    1. 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
  4. fiddy Messages postés 441 Date d'inscription   Statut Contributeur Dernière intervention   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
    1. 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