C ++ - stat()需要什么权限?

时间:2014-06-12 11:28:36

标签: c++ stat

使用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中,但我检查了它们,一切都很好。

接下来当然是要更改文件和目录的权限,这样任何人都可以读写,但结果没有改变。

我真的希望你们能以任何方式帮助我,我们非常感谢你的帮助! 提前谢谢!

1 个答案:

答案 0 :(得分:1)

您是否拥有/home/bernd/dir的执行权限?读取权限仅允许您列出目录,而无需访问其任何内容。

(另一方面,没有读取权限的执行权限允许您访问内容但使目录不可列表(readdir将失败)。)