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?¿Cómo leo la información del sistema en C++?
Respuesta
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 generalmente le mostrará las llamadas relevantes del sistema 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
Si está utilizando 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.
No hay nada en la biblioteca estándar de C++ para estos fines. La biblioteca se puede utilizar es libhal
, que abstrae la vista de los programas para el hardware, la recogida de informaciones diversas de /proc
, /sys
y otros. HAL, desplácese hacia abajo, parece haber un enlace no oficial de C++ disponible también (aunque no lo he probado, mientras que libhal también funciona bien para los programas en 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 leer cosas directamente del /proc filesystem, 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 HAL abstrae muchos de estos detalles para usted, pero sólo sé que se puede leer directamente de/proc si se utiliza una biblioteca no es una opción.
La información del sistema es, por definición, no es portátil, por lo que no hay 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 utilizado en un proyecto de C++ sin muchos problemas (la instalación es un poco no estándar, pero puede ser resuelto fácilmente)
- 1. ¿Cómo obtener información del sistema en PHP?
- 2. ¿Cómo puedo devolver la información del sistema en Python?
- 3. ¿Cómo obtener la información del sistema con Python?
- 4. ¿Cómo recuperar información útil del sistema en Java?
- 5. ¿Cómo leo esta declaración compleja en C?
- 6. ¿Cómo obtener información sobre el sistema de archivos del disco?
- 7. ¿Cómo leo la información del etiquetador de una etiqueta de git?
- 8. ¿Cómo leo la entrada formateada en Java?
- 9. ¿Cómo recupero la información del disco en C#?
- 10. cómo recopilar información del sistema en osx con el objetivo c
- 11. ¿Cómo leo la información de firma digital de un ensamblado .Net firmado?
- 12. Obtener información de zona horaria del sistema en Python?
- 13. ¿Cómo leo el correo entrante usando C#
- 14. programación encontrar información sistema Android
- 15. Obtenga información del sistema Linux con Lazarus y FreePascal
- 16. ¿Cómo leo el espacio en blanco usando scanf en c?
- 17. ¿Cómo leo la salida del comando IPython% prun (profiler)?
- 18. biblioteca de información de proceso/sistema portátil
- 19. Usar imágenes del sistema en C#
- 20. Ocultar la consola en la función del sistema C(), Win
- 21. SecCertificateRef: ¿cómo obtener la información del certificado?
- 22. ¿Cómo leo una línea arbitrariamente larga en C?
- 23. ¿Cómo leo y edito un archivo .txt en C#?
- 24. valor de retorno del sistema() en C
- 25. Obtenga información de pc (sistema) en la máquina de Windows - Script de C#
- 26. ¿Cómo leo la configuración de Symfony2 config.yml?
- 27. Cómo obtener información del usuario en Lua
- 28. Cómo supervisar la información del trabajo del Agente SQL Server en C#
- 29. ¿Cómo puedo recuperar la información del monitor?
- 30. ¿Cómo puedo crear un Mutex del sistema en C#
También puede strace un programa de sistema (aplicación) existente, si se puede controlar el ruido. P.ej. "strace uname -a" Esto le muestra TODAS las llamadas al sistema realizadas por ese programa. Encuentre la llamada al sistema correcta y puede invocar la misma rutina desde su propio programa. –
No sabes lo feliz que estoy de no tener que analizar la salida del sistema ("df"). Muchas gracias. :) –