我想知道如何检查我是否具有对文件夹的写入权限。
我正在编写一个 C++ 项目,我应该将一些数据打印到 result.txt 文件,但我需要知道我是否有权限。
Linux 和 Windows 的检查有什么不同吗?因为我的项目应该在 Linux 上运行,而我目前正在 Visual Studio 中工作。
最佳答案
检查权限的可移植方法是尝试打开文件并检查是否成功。如果没有,和errno
(从标题 <cerrno>
设置为值 EACCES
[是的,有一个 S],那么你没有足够的权限。这应该适用于 Unix/Linux 和 Windows 。stdio 的示例:
FILE *fp = fopen("results.txt", "w");
if (fp == NULL) {
if (errno == EACCES)
cerr << "Permission denied" << endl;
else
cerr << "Something went wrong: " << strerror(errno) << endl;
}
Iostream 的工作方式略有不同。据我所知,他们不保证设置 errno
在两个平台上,或者报告比“失败”更具体的错误。
正如 Jerry Coffin 所写,不要依赖单独的访问测试函数,因为您的程序很容易出现竞争条件和安全漏洞。
关于c++ - 在 Windows/Linux 中检查对文件的写入权限,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3799053/