如何确定* nix上的进程文件是否为只读?

时间:2012-09-23 21:29:19

标签: c++ linux file-io

使用stat函数,我可以获得:/ / p>的读/写权限

  • 所有者
  • 用户
  • 其他

......但这不是我想要的。我想知道我的进程(即我正在编写的应用程序)的文件的读/写权限。所有者/用户/其他人只有在我知道我的进程是否作为文件的所有者/用户/其他人运行时才有用...所以也许这是解决方案,但我不确定到达那里的步骤。

3 个答案:

答案 0 :(得分:2)

使用getuid() / geteuid()来确定流程的用户ID,同样使用getgid() / getegid()来获取群组ID。然后,您可以与文件的所有者/组(您从statlstat获得)进行比较,并交叉引用权限位。

答案 1 :(得分:2)

您不希望使用stat()。您想使用access()中的<unistd.h>

char const* name = "file";
if (access(name, R_OK)) {
    std::cout << "'" << name << "' is readable\n";
}
if (access(name, W_OK)) {
    std::cout << "'" << name << "' is writable\n";
}

答案 2 :(得分:1)

这样的事情:

if ( access( filename, W_OK )) { /* writable */ }

请参阅access(2)