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

C++ - What permissions does stat() need?

本文关键字:什么 权限 stat c++      更新时间:2023-10-16

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

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

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

您是否有/home/bernd/dir的执行权限?读权限只允许您列出目录,而不一定能够访问其任何内容。

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