Pregunta

Estoy tratando de obtener información como la versión del sistema operativo, el espacio en el disco duro, el espacio en disco disponible y la 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 mejor manera. ¿Hay algo en la biblioteca estándar de C ++ que pueda usar para obtener información del sistema operativo?

¿Fue útil?

Solución

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

Luego, desplácese hasta la parte inferior de la página de manual y, por lo general, le mostrará qué llamadas relevantes al 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á utilizando el sistema (" uname "). Desde la página de manual puede ver que también hay una llamada al sistema uname C (uname (2)). Entonces, ahora puede hacer un 'man 2 uname' para obtener información sobre cómo usar el sistema C, llame a uname.

Otros consejos

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 al hardware, recopilando diversas informaciones de / proc , / sys y otros . HAL , desplácese hacia abajo, parece que también hay un enlace no oficial de C ++ disponible (haven ' Sin embargo, lo probé, mientras que libhal también funciona bien para programas C ++). Use el comando lshal para mostrar toda la información del dispositivo disponible para HAL.

Si no desea utilizar HAL como lo sugiere litb, puede lea cosas directamente del / proc filesystem , siempre que esté allí en su sistema. Esta no es la forma más independiente de plataforma de hacer las cosas, y en muchos casos tendrá que analizar un poco para separar los archivos.

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

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

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top