2
Я сохранил свою программу в папке, где есть файлов. Теперь я хочу распечатать файлы inode
номеров. Вот моя программа:C opendir и readdir и inode
#include <sys/types.h>
#include <dirent.h>
#include <stdio.h>
#include <libgen.h>
#include <stdlib.h>
#include <string.h>
int main(){
DIR *dir;
struct dirent *dp;
if((dir = opendir(".")) == NULL){
printf ("Cannot open .");
exit(1);
}
while ((dp = readdir(dir)) != NULL) {
printf("%i\n",(*dp).d_ino);
}
}
и вот мои результаты
251
250
332
254
257
328
274
283
Так у меня есть 5 файлов и 8 числа я-узел? Как это возможно?
EDIT: Когда я добавляю печатать эту
printf("%i\n",dp->d_name);
printf("%i\n",dp->d_ino);
я получаю этот выход
-27246574
251
-27246550
250
-27246526
334
-27246502
254
-27246470
257
-27246438
328
-27246414
274
-27246382
283
Так что я думаю, что моя программа не находит файлы в каталоге?
Печать имен файлов ('dp-> d_name') также будет просвещать. Это из-за записей '.' И '..', которые находятся в каждом каталоге. – Ulfalizer
@ Ulfalizer Я думал об одном и том же, но 5 + 2 -> 7, так что все еще не хватает. Может быть, скрытый файл ... @user: возможно, добавьте результат 'ls -la' в ваш каталог – smagnan
@smagnan: Да, dotfile звучит правдоподобно. Или просто опечатка. :) – Ulfalizer