Question

Je comprends qu'un répertoire est juste un fichier unix qui contient les numéros d'inodes et les noms des fichiers dans. Comment puis-je jeter un oeil à ce sujet? Je ne peux pas utiliser le chat ou moins sur un répertoire, et l'ouverture en vi me montre juste une liste des fichiers ... aucun numéro inode.

Était-ce utile?

La solution

Comme il est une question de programmation (il est une question de programmation, non?), Vous devriez vérifier les fonctions opendir, readdir et closedir. Ceux-ci font partie de la spécification UNIX unique.

#include <sys/types.h>
#include <dirent.h>

DIR *opendir (const char *dirname);
struct dirent *readdir(DIR *dirp);
int closedir(DIR *dirp);

Le fichier dirent.h doit avoir la structure dont vous avez besoin, contenant au moins:

char   d_name[]    name of entry
ino_t  d_ino       file serial number

Voir pour la readdir manpage - il contient des liens vers les autres.

Gardez à l'esprit que la quantité d'informations sur un fichier stocké dans les entrées d'annuaire pour elle est minime. Le inode contient lui-même les choses que vous obtenez de la fonction stat, des choses comme les temps, la taille, le propriétaire, autorisations, etc., ainsi que les pointeurs tous importants pour le contenu réel du fichier.

Autres conseils

Dans l'ancien temps - version 7, système III, au début de System V - vous pouvez en effet ouvrir un répertoire et lire le contenu en mémoire, en particulier pour l'ancien système de fichiers Unix avec des numéros inode 2 octets et une limite de 14 octets sur le nom du fichier.

Les systèmes de fichiers plus exotiques sont devenus plus fréquents, le opendir (), readdir (), famille closedir () des appels de fonction devait être utilisé à la place parce que l'analyse du contenu d'un répertoire est devenu. De plus en plus non négligeable

Enfin, dans la dernière décennie, il a atteint le point où la plupart des systèmes, vous ne pouvez pas lire le répertoire; vous pouvez l'ouvrir (surtout si des opérations telles que fchdir () peuvent travailler), et vous pouvez utiliser la famille opendir () des appels pour le lire.

Il ressemble à la commande stat pourrait être dans l'ordre. De l'article:

stat /etc/passwd

    File: `/etc/passwd'
    Size: 2911                Blocks: 8 IO    Block: 4096 regular file
    Device: fd00h/64768d      Inode: 324438   Links: 1
    Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
    Access: 2008-08-11 05:24:17.000000000 -0400
    Modify: 2008-08-03 05:11:05.000000000 -0400
    Change: 2008-08-03 05:11:05.000000000 -0400
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top