使用C/C++处理sysfs内容的最佳方法是什么?

9
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”是一个可能的选择吗?在文本解析方面,这似乎是最简单的方法。 - SiegeX
前一段时间我也在寻找这方面的东西,最终放弃了并自己编写了一个,因为我意识到在所有文件中,我只对特定的信息位感兴趣,所以额外的开销不值得。 - Nim
2个回答

12

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

不要使用 libsysfs


根据上述描述,我使用了 libudev,但不幸的是它没有列出 /sys/devices/system 中的设备/子系统,这种行为有特殊原因吗? - grundprinzip

1
穿上你的鞋,我可能会编写自己的库。因为这些库可能不会(并且很可能不会)满足您的所有要求。fstream ftw。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接