Petit problème lorsque je désire afficher l'inode d'un fichier :
j'essaye de reproduire un basique ls -i, mais la valeur retournée par mon petit programme ne correspond pas toujours à la valeur renvoyé par ls -i. Notamment pour les dossiers /net, /home et /dev.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 int main(int argc, char *argv[]) { DIR *dp; struct dirent *dirp; if (argc != 2) { ft_error("USAGE"); } if ((dp = opendir(argv[1])) == NULL) ft_error("Can't open"); while ((dirp = readdir(dp)) != NULL) { printf("%llu %s\n", dirp->d_fileno, dirp->d_name); } closedir(dp); exit (0); }
J'ai essayé, à titre de comparaison, d'utiliser la valeur de l'inode contenu dans la structure stat de chaque fichier mais les valeurs ne correspondent pas.
résultat ls -i :
848433 cores
301 dev
848435 etc
5 home
résultat a.out :
848433 cores
848434 dev
848435 etc
869200 home
Certaines valeurs (comme /cores) correspondent mais d'autres non. En observant ls -l pour comprendre, j'ai remarqué que la date de modification correspondait à aujourd'hui pour les dossiers avec des valeurs différentes, ce qui voudrait dire que l'inode que je trouve avec mon programme correspond à la dernière date de modification (qui serait la date de création du dossier) mais que le ls -i m'afficherait l'inode correspondant à la création du fichier lors de la "création du système".
Je ne sais pas si je suis assez clair, mais j'aimerais bien comprendre d'ou provient la différence.
Merci
Partager