Linux c ++:apis vs / proc文件?

时间:2011-01-10 20:08:49

标签: c++ linux battery procfs disk-partitioning

我在开发应用程序以收集和发送各种系统信息(分区空间/免费,笔记本电脑电池信息等)。我没有太多成功以直接c ++ api的形式获取这些信息..虽然它可以通过/ proc(或类似)中的文件获得。

所以 - 我想知道在我的c ++应用程序中读取/解析这些文件是否是获取此信息的适当方式,还是应该继续尝试发现API? (注意:我正在使用statvfs)。

到目前为止,在Win32中收集此类信息似乎更容易。看起来很奇怪。

3 个答案:

答案 0 :(得分:7)

最好到目前为止按照以下优先顺序坚持使用API​​。

  • 您的语言API(在这里对您没什么帮助,但是对于字符串来说,C99字符串函数比使用Posix或其他OS标准指定的库字符串工具更好。)

    < / LI>
  • Posix操作软件API

  • 记录的内核API

  • 未记录的内核API(至少这些会破坏,比如,如果用户改变了ioctl用户,那么他们可能不会改变)

  • /proc

  • /dev/kmem/dev/mem

没有理由相信/proc拖钓从发布到发布都是可移植的,甚至是相同的。并非每个系统都会安装/proc

说了这么多, 更容易从/proc中删除,如果它是唯一可用的界面,那么你应该继续使用它.qa

最后,最后两个的排序并不完全清楚,因为/proc不可用于事后内核崩溃转储分析,但可以查看核心转储的工具仍然有效。

答案 1 :(得分:1)

我认为/ proc是API(一切都是文件......)

答案 2 :(得分:0)

正如您所注意到的,许多Linux系统信息都在/proc中。你是正确的,通常没有用于检索该信息的C API(尽管如果你倾向于坚持使用bash而不是C ++,通常会有一个shell命令)。在最糟糕的情况下,您可能会被解析/proc,但您可能会以开源shell命令的形式获取所需的特定项目的示例代码。