【问题标题】:Get file's owner and group using boost使用 boost 获取文件的所有者和组
【发布时间】:2012-04-23 23:04:51
【问题描述】:

我想使用 boost::filesystem 从文件中获取所有者和组,但从未找到任何方法。

我可以获得文件的权限,但由于我不知道文件的所有者,所以这没有任何意义。

我找到了 posix fstat 函数,但我还是想使用 boost 或其他 C++ 库而不是 C 函数。

【问题讨论】:

标签: c++ boost boost-filesystem fstat


【解决方案1】:

你要求做的是一个 Unix 系统调用。但你不想叫它?为什么? boost可以提供什么可能的价值?这不是可移植性,因为 Unix 之外的任何东西都不会有有意义的 st_gid 字段。

【讨论】:

  • 它将可移植到所有 posix 系统:) 所以也许有这样的 C++ 库实现了这个。由于我正在开发 CLI 工具,它并不是真正为 Windows 和其他非 posix 系统设计的
  • POSIX 是规范,Unix 是实现,并不完全相同。 posix 系统可能不是 unix 系统。在那种情况下,你永远不要使用任何库,因为一切都是系统调用。为什么我应该使用new,因为它已解析为系统调用?这里也一样。
  • 你想要你的答案吗?显然,一切都不是系统调用:您无法打开窗口、解压缩 zlib 流或使用系统调用计算 MD5 哈希。但是你可以统计一个文件。您正在使用一种可以无障碍访问您平台的系统调用的语言进行编写。使用它。
  • 只有一点,系统调用涉及中断指令,不能在 C 或 C++ 中本地重现。 fstat 函数已经是系统调用的包装器,而不是系统调用本身,因此可能有 C++ lib 执行相同的操作。当它只是一个包装器时,您将系统调用作为解决方案提供给我。但如果没有 C++ 解决方案就直说吧,这就是我想知道的全部内容!
  • @AndyRoss boost::filesystem 确实为 POSIX 权限位掩码(如读/写/执行)提供了抽象,因此问为什么 boost::filesystem 省略了 POSIX 所有者/组的抽象是绝对有意义的。跨度>
猜你喜欢
  • 2016-07-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-10-29
  • 1970-01-01
  • 1970-01-01
  • 2022-09-28
相关资源
最近更新 更多