我在开发应用程序以收集和发送各种系统信息(分区空间/免费,笔记本电脑电池信息等)。我没有太多成功以直接c ++ api的形式获取这些信息..虽然它可以通过/ proc(或类似)中的文件获得。
所以 - 我想知道在我的c ++应用程序中读取/解析这些文件是否是获取此信息的适当方式,还是应该继续尝试发现API? (注意:我正在使用statvfs)。
到目前为止,在Win32中收集此类信息似乎更容易。看起来很奇怪。
答案 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命令的形式获取所需的特定项目的示例代码。