【问题标题】:system file, read write o create custom metadata or attributes extended系统文件,读写或创建自定义元数据或扩展属性
【发布时间】:2023-03-05 19:29:01
【问题描述】:

我正在寻找一种从任何文件读取、写入或创建(自定义)标签、扩展属性或元数据的方法。没有库和语言 c 或 c++。我认为我可以使用 fopen、fread、fwrite,但不能使用如何访问元数据。

提前致谢,

【问题讨论】:

  • 欢迎来到 Stack Overflow。您能否更具体地了解您正在谈论的元数据或属性?您是否引用了您正在创建和存储的元数据?还是操作系统正在管理的元数据?您使用的是什么操作系统?
  • 我的意思是我正在创建和存储元数据。我的 SO 是 Linux。
  • 因此,您只需要创建将保存元数据的文件,然后写入该文件。您能告诉我们您尝试过做什么,以及您在哪里卡住了吗?
  • 不,我正在寻找读写任何现有文件,不想创建专门用于存储元数据的文件。与扩展属性类似,但自定义。谢谢@Rob

标签: c++ c linux filesystems


【解决方案1】:

用于操作扩展属性的 Linux 系统调用是 setxattrgetxattrremotexattr。该程序可能会满足您的要求:

// UNTESTED
#include <sys/types.h>
#include <sys/xattr.h>
#include <cstring>
#include <cstdio>

int main () {
  const char* file = "/work/a.txt";
  const char* attr = "user.MyAttr";
  const char* value = "MyValue";
  int rc = setxattr(file, attr, value, strlen(value), 0);
  if(rc < 0)
    perror(file);
  return !!rc;
}

【讨论】:

  • 属性名可能必须以"user."为前缀,我不确定。
  • 如果 Rob 正在工作,前缀“user”是强制性的。我在业余时间做这个项目。 谢谢罗布。那我告诉你。
  • 我还在命令行中测试了getfattr和setfattr,非常棒。问题是这可能是“跨平台”还是我必须为每一个都做?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2010-09-18
  • 1970-01-01
  • 1970-01-01
  • 2023-04-08
  • 2011-12-24
  • 1970-01-01
相关资源
最近更新 更多