Я новичок в C, но пробую некоторые системные вызовы.
Я пишу программу, которая перебирает все файлы в каталоге и печатает имя и размер текущего файла.Я могу заставить программу напечатать имя файла, но оно вызывает ошибку, когда я преформирую системный вызов stat.
Вот часть кода:
while (dptr = readdir(dirp)) {
if (stat(dptr->d_name, &buf) != 0) {
//Always does this and it does print the file name
printf("Error on when getting size of %s \n", dptr->d_name);
} else {
//Never gets here
printf("%u", buf.st_size);
}
}
У меня есть структуры, описанные следующим образом:
struct stat buf;
struct dirent *dptr;
DIR *dirp;
Если я изменю:
if (stat(dptr->d_name, &buf) != 0)
на
if (stat(dptr->d_name, &buf) != [EACCES])
Это все еще входит в цикл, который заставляет меня думать, что он не может прочитать файлимя, но он печатает его в сообщении об ошибке без проблем.
Может ли кто-нибудь указать мне правильное направление?Спасибо!
Аркадий