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








Répondre avec citation





Partager