使用stat()
功能时遇到了一些问题
我正在做的很简单,我记得它在另一台机器上工作
我有一个像这样的目录结构:
/home/bernd/dir
/home/bernd/dir/file.ext
/home/bernd/dir/anotherDir
......等等
我想要做的是用这个源代码区分文件和目录:
DIR *dir = opendir("/home/bernd/dir");
struct dirent *pent;
while(pent = readdir(dir))
{
if((strcmp(pent->d_name,".") == 0) || (strcmp(pent->d_name,"..") == 0)
continue;
struct stat st;
string tmp = "/home/bernd/dir/" + pent->d_name;
if(stat(tmp.c_str(),&st) == -1)
cout<<strerror(errno);
else
//would be happy to get here
}
正如您所看到的,我只是浏览目录并在当前元素上调用stat,但stat调用始终返回Permission Denied
。我以为我一开始就搞乱了相对路径,或者我在错误的路径上调用了stat,它保存在字符串tmp
中,但我检查了它们,一切都很好。
接下来当然是要更改文件和目录的权限,这样任何人都可以读写,但结果没有改变。
我真的希望你们能以任何方式帮助我,我们非常感谢你的帮助! 提前谢谢!
答案 0 :(得分:1)
您是否拥有/home/bernd/dir
的执行权限?读取权限仅允许您列出目录,而无需访问其任何内容。
(另一方面,没有读取权限的执行权限允许您访问内容但使目录不可列表(readdir
将失败)。)