我是C新手,但尝试了一些系统调用。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])
它仍然进入循环,这让我认为它不能读取文件名,但它将错误语句打印出来没有问题。
有人能指出我正确的方向吗?谢谢!
Аркадий
是您所提供的_full_路径的文件和文件夹的名称? – 2011-12-15 18:45:23
`stat`永远不会返回`EACCES`。它将返回-1,然后将`errno`设置为`EACCES`。 – 2011-12-15 18:51:50
当它在当前目录中时它工作吗? (根据@ codaddict的回答) – 2011-12-15 19:00:05