我需要读取系统信息,如C / C ++中的CPU / RAM /磁盘使用情况。 也许交换,networking和过程,但这不是那么重要。
它可能已经做了一千次,所以我第一次试图寻找一个图书馆。 有人在这里build议SIGAR ,这似乎符合我的需求,但它有一个GPL许可证,它是包含在一个专有的产品。 所以这不是一个选项。
我觉得这不是那么容易实现,因为它需要在多个平台上进行testing。 所以图书馆将是受欢迎的。
如果你不知道任何图书馆,你能指出我在两个平台的正确方向吗?
在Windows上,请尝试GetDiskFreeSpaceEx和GlobalMemoryStatusEx 。
由于Linux允许你挂载卷的方式,Linux比较复杂。 你总是可以system()
到“df”,但这是可怕的。 由于Linux是开放源代码,只需查看“df”的源代码即可了解它的工作原理! 🙂
如果您没有时间:对于UNIX变体(包括Linux),您可以尝试libstatgrab 。 这是LGPL /专有友好。 您可能需要#ifdef
专门为Windows的一些代码,幸运的是,Windows调用很简单。 最差情况:200行。 如果你感觉慷慨,你可以贡献一个补丁,为成熟的Windows支持:)
祝你好运!
你最好的选择是自己创造一些东西。
在Windows上,你会看到这样的: http : //www.codeproject.com/KB/system/Using_WMI_in_Visual_C__.aspx和这个: http : //www.philosophicalgeek.com/2009/01/03/determine- CPU使用率-的电流过程-C-和-C /
简单的回答是,推出自己的实施并不是很难。
有关更完整的答案,请参阅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混乱更清晰。