如何在C++中读取系统信息?

Bil*_*ard 8 c++ linux operating-system system

我试图在C++的Linux系统上获取OS版本,硬盘空间,可用磁盘空间和已安装的RAM等信息.我知道我可以system()用来运行不同的Linux命令并捕获它们的输出(这是我目前正在做的)但我想知道是否有更好的方法?我可以使用C++标准库中的某些东西从操作系统获取信息吗?

Mar*_*ork 12

如果您通过系统使用*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
Run Code Online (Sandbox Code Playgroud)

所以如果你使用的是系统("uname").在手册页中,您可以看到还有一个uname C系统调用(uname(2)).因此,您现在可以执行"man 2 uname"以获取有关如何使用C系统调用uname的信息.

  • 如果可以处理噪声,您还可以对现有的系统程序(应用程序)进行扫描.例如"strace uname -a"这将显示该程序进行的所有系统调用.找到正确的系统调用,您可以从自己的程序中调用相同的例程. (2认同)

Joh*_*itb 5

C++标准库中没有任何内容可用于这些目的.您可以使用的库libhal,它将程序视图抽象到硬件,从中收集各种信息/proc,/sys以及其他信息.HAL,向下滚动,似乎也有一个非官方的C++绑定(虽然没有测试过,而libhal对C++程序也很好).使用此命令lshal可显示HAL可用的所有设备信息.