valeur inode "d_fileno" différente de la valeur dans "ls -i"
Petit problème lorsque je désire afficher l'inode d'un fichier :
Code:
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'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.
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