【问题标题】:Does CPP provide a way to figure out which of the filesystem perms apply?CPP 是否提供了一种方法来确定哪些文件系统权限适用?
【发布时间】:2020-01-24 23:06:23
【问题描述】:

(这是针对 C++17 等较新标准的特定查询)

文件系统标头现在提供了一种获取路径权限的方法,格式为标准 3 权限方式(所有者、组、其他)。

如何确定哪些是相关许可? (执行程序是所有者,是具有访问权限的组的成员,还是两者都不是的成员,因此是“其他”)

我正在寻找一种原生的跨平台方式,如果这还不可能,请告诉我。这样做的目的是避免在我自己的代码中手动将这项职责分配给显式的 unix 命令或 windows 库函数,如果我可以避免这样做的话。

【问题讨论】:

  • 权限本身很难移植——FAT 有一个只读位,现代文件系统支持 ACL(在 Windows 上更广泛地使用)。我不确定就他们的解释提问是否有意义。

标签: cross-platform c++17 file-permissions std-filesystem


【解决方案1】:

std::filesystem::status 返回文件状态和stat 给出的权限,但不提供用户和组信息,因此无法知道哪些位与当前进程相关。

这里的要点是,标准库旨在提供跨不同目标平台(Windows、Linux、Mac 等)的可移植行为,对于用户和组而言,这样做绝对不是一件容易的事。正如@Davis Herring 在 cmets 中所说,即使是文件权限也很难移植。

标准库基于boost:filesystem,我们有the same problem

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-08-30
    • 1970-01-01
    • 2016-09-24
    • 1970-01-01
    • 2016-09-26
    • 1970-01-01
    • 2012-03-25
    • 1970-01-01
    相关资源
    最近更新 更多