c++ - 在 Windows/Linux 中检查对文件的写入权限

标签 c++ file permissions

我想知道如何检查我是否具有对文件夹的写入权限。

我正在编写一个 C++ 项目,我应该将一些数据打印到 result.txt 文件,但我需要知道我是否有权限。

Linux 和 Windows 的检查有什么不同吗?因为我的项目应该在 Linux 上运行,而我目前正在 Visual Studio 中工作。

最佳答案

检查权限的可移植方法是尝试打开文件并检查是否成功。如果没有,和errno (从标题 <cerrno> 设置为值 EACCES [是的,有一个 S],那么你没有足够的权限。这应该适用于 Unix/LinuxWindows 。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/

相关文章:

django - 无法实现django-rules授权

android - 如何使用系统权限编译 Android 应用程序

perl - 如何在 Perl 中修改 Windows NTFS 权限?

c++ - 你怎么知道 main 是否已经退出?

c++ - chrono::steady_clock 是否在线程上阻塞?

c - 使用带有指针的结构读取二进制文件中的某个位置

iphone - 高效使用 NSData

c++ - 检查到目前为止我在 C++ 中使用了哪些值的最快方法是什么?

c++ - 如何获取模板模板参数的模板参数?

linux - 具有多个参数的 Gnu Parallel - 选择性命令执行