【发布时间】:2012-09-23 21:29:18
【问题描述】:
使用 stat 函数,我可以获得以下的读/写权限:
- 所有者
- 用户
- 其他
...但这不是我想要的。我想知道我的进程(即我正在编写的应用程序)的文件的读/写权限。只有当我知道我的进程是否作为文件的所有者/用户/其他人运行时,所有者/用户/其他人才有帮助......所以也许这就是解决方案,但我不确定到达那里的步骤。
【问题讨论】:
使用 stat 函数,我可以获得以下的读/写权限:
...但这不是我想要的。我想知道我的进程(即我正在编写的应用程序)的文件的读/写权限。只有当我知道我的进程是否作为文件的所有者/用户/其他人运行时,所有者/用户/其他人才有帮助......所以也许这就是解决方案,但我不确定到达那里的步骤。
【问题讨论】:
您不想为此使用stat()。你想从<unistd.h>使用access():
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";
}
【讨论】:
使用getuid()/geteuid() 确定进程的用户ID,同样使用getgid()/getegid() 确定组ID。然后您可以比较文件的所有者/组(您从stat 或lstat 获得)并交叉引用权限位。
【讨论】:
【讨论】: