【问题标题】:What is the best way to process the content of sysfs using C/C++?使用 C/C++ 处理 sysfs 内容的最佳方法是什么?
【发布时间】:2011-01-12 20:14:09
【问题描述】:

Linux 内核使用 /sys 中的 sysfs 文件系统公开有关当前环境的信息。我有兴趣获取有关在线 CPU 及其内存层次结构(1 级到 3 级缓存)的信息。

由于所有这些信息基本上都是文本文件,我可以自己编写解析器,但我很好奇在 sysfs 中处理信息的最佳方式是什么。目前我找到了两种选择:

libsysfs

libudev

libsysfs 的缺点似乎是代码现在已经快 5 年了,几乎没有可用的文档,libudev 似乎更活跃但文档很少。我在libudev 上只找到了一个有用的教程——http://www.signal11.us/oss/udev/

在 C/C++ 中处理来自 sysfs 的内容的最先进方法是什么?

[更新]

目前无法访问存储在/sys/devices/system 中的数据,因为暴露的信息不是真实设备。访问这些数据的唯一方法是手动进行。

【问题讨论】:

  • 既然你用unix-programming标记了这个,awk有可能吗?在文本解析方面,这似乎是阻力最小的路径。
  • 前段时间我也在为此寻找一些东西,最后放弃并写了我自己的,因为我意识到在所有文件中,我真的只对特定的一点感兴趣的信息,所以开销是不值得的......

标签: c++ c linux unix


【解决方案1】:

内核作者发布了sysfs-rules.txt,其中解释了必须如何使用 sysfs。他们特别指出

不要使用 libsysfs

【讨论】:

  • 按照上述说明,我与libudev 合作过,不幸的是它没有在/sys/devices/system 中列出设备/子系统,这种行为是否有特殊原因?
【解决方案2】:

穿着你的鞋子,我可能会编写自己的库。由于这些库可能不(也可能不会)满足您的所有要求。 fstream ftw。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-21
    • 2010-09-06
    • 2021-11-18
    • 1970-01-01
    • 2013-10-23
    • 2014-03-12
    相关资源
    最近更新 更多