d - 检查 File/DirEntry 是否可读

标签 d file-permissions

我在 std.file 中缺少一个函数,该函数检查 DirEntryattributes() 成员是否意味着它可读特定的用户 ID(默认为当前用户)。有人写过这样的逻辑吗?为什么标准库中没有这样一个经常使用的函数?

最佳答案

I know that such a function is not difficult to write.

真的吗?我期待看到您的实现适用于 D 支持的所有系统。这包括对 Windows 和 Linux ACL 的支持,更不用说 SELinux 等安全软件了。

我相当确定检查打开文件是否成功的通用正确方法是尝试打开文件。如果您接受一个近似值,并且只关心 Linux,则可以使用 C eaccess 函数 - 但是,它不是 POSIX 的一部分,并且只能在 Linux 上运行。如果您的程序永远不会以 root 身份运行,您可以使用 access,它是 POSIX 的一部分。就个人而言,如果没有充分的理由,我不会走这条路。如果您担心性能(并且您希望有很多文件存在但由于某种原因不可读),您可以使用 C 函数(fopen 或 POSIX open ),但是我只会在分析实际显示由异常处理引起的瓶颈时才这样做。更不用说,您需要做好抛出异常的准备,正如上面和您之前关于该主题的问题中所讨论的那样。

只需使用异常处理,除非您真的知道自己在做什么。

关于d - 检查 File/DirEntry 是否可读,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18946850/

相关文章:

networking - 在 D 中下载文件

string - 为什么不能将字符串键存储在关联数组中?

linux - 执行 git push 时如何修复 .git/directory 被拒绝的权限?

d - 如何检查变量是否在D中声明?

eclipse - 尝试调试 D 程序时出错

c++ - 用于定位对象的序列化和数据库技术

ubuntu - 为什么 setuid 不以所有者身份运行?

amazon-web-services - ls : cannot open directory '.' : Permission denied

C# Windows 服务创建跟踪文件但从不写入它

wordpress - 谁应该是 WordPress 文件和目录的所有者?