我是 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])
它仍然进入循环,这让我认为它无法读取文件名,但它在错误语句中打印它没有问题。
有人可以指出我正确的方向吗?谢谢!
Аркадий