我试图在C++的Linux系统上获取OS版本,硬盘空间,可用磁盘空间和已安装的RAM等信息.我知道我可以system()
用来运行不同的Linux命令并捕获它们的输出(这是我目前正在做的)但我想知道是否有更好的方法?我可以使用C++标准库中的某些东西从操作系统获取信息吗?
如果您通过系统使用*nix命令.
然后man会滚动到手册页的底部,它通常会显示相关的C系统调用.
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 C系统调用(uname(2)).因此,您现在可以执行"man 2 uname"以获取有关如何使用C系统调用uname的信息.
C++标准库中没有任何内容可用于这些目的.您可以使用的库libhal
,它将程序视图抽象到硬件,从中收集各种信息/proc
,/sys
以及其他信息.HAL,向下滚动,似乎也有一个非官方的C++绑定(虽然没有测试过,而libhal对C++程序也很好).使用此命令lshal
可显示HAL可用的所有设备信息.