10

我正在开发一个应用程序来收集和发送各种系统信息(分区空间/空闲、笔记本电脑电池信息等)。我以直接 c++ api 的形式获取这些信息并没有取得多大成功。尽管它都可以通过 /proc (或类似)中的文件获得。

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

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

4

3 回答 3

6

到目前为止,最好的做法是按照以下优先顺序使用 API。

  • 您的语言 API(在这里对您没有多大帮助,但对于字符串来说,C99 字符串函数比 Posix 或其他操作系统标准指定的库字符串工具更好用。)

  • Posix 操作软件 API

  • 文档化的内核 API

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

  • /proc

  • /dev/kmem,/dev/mem

没有理由相信/proc拖钓将是可移植的,甚至从发布到发布都是一样的。不是每个系统都会/proc安装一个!

说了这么多,只是刮掉东西要容易得多,如果它/proc唯一可用的界面,那么你应该继续使用它。qa

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

于 2011-01-10T20:46:09.587 回答
1

我虽然 /proc 是 API(一切都是文件......)

于 2011-01-10T20:37:47.827 回答
0

正如您所注意到的,很多 Linux 系统信息都位于/proc. 你是对的,通常没有用于检索该信息的 C API(尽管如果你倾向于坚持使用 bash 而不是 C++,通常会有一个 shell 命令)。在最坏的情况下,您可能会在解析/proc时遇到困难,尽管您可能能够以开源 shell 命令的形式为您想要的特定项目获取一些示例代码。

于 2011-01-10T20:14:23.840 回答