2011-01-12 12 views
8

El kernel de Linux expone información sobre el entorno actual utilizando el sistema de archivos sysfs en/sys. Estoy interesado en obtener información sobre las CPU en línea y su jerarquía de memoria (cachés de nivel 1 a nivel 3).¿Cuál es la mejor manera de procesar el contenido de sysfs usando C/C++?

Dado que toda esta información es básicamente archivos de texto, podría escribir un analizador por mi cuenta, pero tengo curiosidad sobre cuál es la mejor forma de procesar la información en sysfs. Actualmente me encontré con dos alternativas:

libsysfs

y

libudev

La desventaja de libsysfs parece ser que el código es ahora casi 5 años de edad y casi no dispone de documentación, libudev parece más activo, pero la documentación es bastante rara. Solo hubo un tutorial útil que encontré en libudev - http://www.signal11.us/oss/udev/

¿Cuál es la forma más avanzada de procesar el contenido de sysfs en C/C++?

[Actualización]

Actualmente no es posible acceder a los datos almacenados en /sys/devices/system debido al hecho de que la información expuesta no son dispositivos reales. La única forma de acceder a esta información es hacerlo manualmente.

+0

Ya que esta etiquetado con 'Unix programming', es' awk' una posibilidad? Ese parece ser el camino de menor resistencia cuando se trata de analizar texto. – SiegeX

+0

Hace un tiempo estaba buscando algo para esto también, y al final cedí y escribí el mío, ya que me di cuenta de que en todos los archivos, realmente solo estaba interesado en un poco de información específica, por lo que la sobrecarga era no vale la pena ... – Nim

Respuesta

12

Los autores del núcleo han publicado sysfs-rules.txt, que explica cómo se debe usar sysfs. Señalan, en particular

No utilice libsysfs

+0

Siguiendo la descripción anterior, trabajé con 'libudev' lamentablemente no enumera los dispositivos/subsistemas en'/sys/devices/system' ¿hay alguna razón especial para este comportamiento? – grundprinzip

1

usando sus zapatos Probablemente escribiría mi propia lib. Dado que esas librerías pueden no cumplir (y probablemente no cumplirán) con todos sus requisitos. fstream ftw.

Cuestiones relacionadas