Q:

How do I read system information in C++?

I'm trying to get information like OS version, hard disk space, disk space available, and installed RAM on a Linux system in C++.  I know I can use system() to run different Linux commands and capture their output (which is what I'm currently doing) but I was wondering if there's a better way?  Is there something in the C++ standard library that I can use to get information from the operating system?

A:

If you are using *nix commands via system.
Then do man  scroll to the bottom of the man page and it will usually show you what relevant C system calls are related.
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

So if you are using system("uname"). From the man page you can see that there is also a uname C system call (uname(2)). So you can now do a 'man 2 uname' to get information about how to use the C system call uname.

A:

There is nothing in the C++ Standard library for these purposes. The library you could use is libhal, which abstracts the view of programs to the hardware, collecting various informations from /proc, /sys and others. HAL, scroll down, there seems to be an unofficial C++ binding available too (haven't tested it though, while libhal works also fine for C++ programs). Use the command lshal to display all device informations available to HAL.

