tipos significado que programacion ejemplos declaracion c++ linux operating-system system

c++ - significado - que es declaracion de variables



¿Cómo leo la información del sistema en C++? (4)

Estoy tratando de obtener información como la versión del sistema operativo, espacio en el disco duro, espacio en disco disponible y la memoria RAM instalada en un sistema Linux en C ++. Sé que puedo usar system() para ejecutar diferentes comandos de Linux y capturar su salida (que es lo que estoy haciendo actualmente), pero me preguntaba si hay una forma mejor. ¿Hay algo en la biblioteca estándar de C ++ que pueda usar para obtener información del sistema operativo?


No hay nada en la biblioteca estándar de C ++ para estos fines. La biblioteca que puede usar es libhal , que abstrae la vista de los programas en el hardware, recopilando varias informaciones de /proc , /sys y otras. HAL , desplácese hacia abajo, parece que hay un enlace no oficial de C ++ disponible también (aunque no lo he probado, mientras que libhal también funciona bien para los programas C ++). Use el comando lshal para mostrar toda la información del dispositivo disponible para HAL.


Si está utilizando comandos * nix a través del sistema.

Luego, haga que el hombre se desplace hasta la parte inferior de la página de manual y, en general, le mostrará qué llamadas relevantes del sistema C están relacionadas.

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

Entonces, si estás usando el sistema ("uname"). Desde la página de manual, puede ver que también hay una llamada al sistema de uname C (uname (2)). De modo que ahora puede hacer un ''hombre 2 uname'' para obtener información sobre cómo usar la llamada al sistema C de uname.


Si no quiere usar HAL como lo sugiere litb, puede leer cosas directamente del sistema de archivos / proc , siempre que esté allí en su sistema. Esta no es la manera de hacer las cosas más independiente de la plataforma, y ​​en muchos casos tendrá que hacer un pequeño análisis para separar los archivos.

Creo que HAL resume muchos de estos detalles para usted, pero solo sepa que puede leerlos directamente desde / proc si el uso de una biblioteca no es una opción.


La información del sistema por definición no es portátil, por lo que no existe una solución estándar. Su mejor opción es usar una biblioteca que hace la mayor parte del trabajo por usted. Una de esas bibliotecas de plataforma cruzada (a diferencia de hal, que actualmente es específica de Linux) es SIGAR API , que es BTW de fuente abierta. Lo he usado en un proyecto de C ++ sin muchos problemas (la instalación es un poco no estándar, pero se puede descifrar fácilmente)