我试图得到这样的操作系统版本,硬盘空间,可用磁盘空间,并安装RAM Linux系统在C ++中的信息。我知道我可以使用system()运行不同的Linux命令和捕捉他们的输出(这是目前我在做什么),但我不知道是否有更好的方法?有什么东西在C ++标准库,我可以用它来从操作系统获取信息?

有帮助吗?

解决方案

如果使用的是通过*系统nix命令。结果

然后做男人滚动手册页的底部,它通常会告诉你什么相关的空调系统调用是相关的。

Example:  man uname:
SEE ALSO
       uname(2), getdomainname(2), gethostname(2)


Explanation of numbers:

(1): User UNIX Command
(2): Unix and C system calls
(3): C Library routines
(4): Special file names
(5): File formats
(6): 
(7):
(8): System admin commands

所以,如果你正在使用的系统( “UNAME”)。从手册页,你可以看到,还有一个UNAME空调系统调用信息(uname(2))。所以,你现在可以做一个“人2 UNAME”,以获取有关如何使用C系统调用UNAME的信息。

其他提示

中没有任何C ++标准用于这些目的的库。你可以使用这个库libhal,其抽象的方案着眼于硬件,收集来自/proc/sys等各种信息。 HAL ,向下滚动,似乎有一个非官方的C ++结合使用过(避风港”牛逼测试它虽然,同时libhal作品也罚款C ++程序)。使用命令lshal显示可用的所有设备的信息到HAL。

如果你不想使用 HAL 作为litb建议,你可以读的东西直出 / proc文件系统,提供它的存在,您的系统上。这不是做事情的最独立于平台的方式,并且在很多情况下,你需要做一些解析挑分开的文件。

我觉得HAL抽象很多的这些细节对你来说,只是知道,你可以直接从/ proc读它,如果使用库是不是一种选择。

系统信息是通过定义不是便携式的,所以没有标准溶液。最好的办法是使用完成大部分工作,为您的图书馆。这样的一个跨平台库(不像HAL,这是目前Linux特有的)是 SIGAR API ,这是开源顺便说一句。我已经在没有太多的麻烦一个C ++项目用它(在安装有点非标准但可以很容易地计算出)

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top