我需要读取系统信息,如C ++中的CPU / RAM /磁盘使用情况。也许是交换,网络和流程,但这不太重要。
之前可能已经完成了数千次,所以我第一次尝试搜索图书馆。有人here建议SIGAR,这似乎符合我的需求,但它有GPL许可证,并且包含在专有产品中。所以这不是一个选择。
我觉得这不容易实现,因为它需要在多个平台上进行测试。所以欢迎图书馆。
如果你不知道任何图书馆,你能指出我在两个平台上的正确方向吗?
答案 0 :(得分:3)
在Windows上,尝试GetDiskFreeSpaceEx和GlobalMemoryStatusEx。
由于它允许你安装卷的方式,Linux有点复杂。你可以随时system()
向“df”,但这很可怕。由于Linux是开源的,只需查看源代码“df”就可以了解它是如何工作的! :)
如果您没有时间:对于UNIX变体(包括Linux),您可以尝试libstatgrab。这是LGPL /专有友好。您可能需要#ifdef
专门针对Windows的一些代码,但幸运的是,Windows调用很简单。最坏的情况:200行。如果你感觉很慷慨,你可以为全面的Windows支持提供补丁:)
答案 1 :(得分:0)
简短的回答是推出自己的实施并不是很困难。
有关更完整的答案,请查看QT论坛上的以下主题。这是从2006年开始,但我认为它解决了你的问题:
http://lists.trolltech.com/qt-interest/2006-05/thread00922-0.html
更新:
你可以尝试:
#if defined(WINDOWS)
// either macro format
#define CPU_INFO (<your cpu macro>)
// or function format
void fs_info()
...
#elif defined(LINXU)
...
#elif defined(MAC)
...
#endif
然后在代码中使用这些宏/函数。
我确信有一种方法可以创建一个基于C ++模板的解决方案,它比上面的C语言更清洁。
答案 2 :(得分:0)
你最好的选择是自己创造一些东西。
在Windows上,你会看到类似这样的内容:http://www.codeproject.com/KB/system/Using_WMI_in_Visual_C__.aspx并且:http://www.philosophicalgeek.com/2009/01/03/determine-cpu-usage-of-current-process-c-and-c/