2011-01-12 9 views
8

Der Linux-Kernel stellt Informationen zur aktuellen Umgebung mithilfe des sysfs-Dateisystems in/sys bereit. Ich interessiere mich für Informationen über Online-CPUs und deren Speicherhierarchie (Level 1 bis Level 3 Caches).Was ist der beste Weg, um den Inhalt von sysfs mit C/C++ zu verarbeiten?

Da all diese Informationen im Grunde Textdateien sind, könnte ich selbst einen Parser schreiben, aber ich bin gespannt, wie die Informationen in sysfs am besten verarbeitet werden. Zur Zeit fand ich zwei Alternativen:

libsysfs

und

libudev

Der Nachteil libsysfs zu sein scheint, dass der Code jetzt fast 5 Jahre alt und so gut wie keine Dokumentation verfügbar ist, libudev scheint aktiver, aber Dokumentation ist ziemlich selten. Es gab nur ein nützliches Tutorial, das ich gefunden habe auf libudev - http://www.signal11.us/oss/udev/

Was ist der Stand der Technik Weg Inhalte von sysfs in C/C++ zu verarbeiten?

[Update]

Derzeit ist es nicht möglich ist, Daten in /sys/devices/system auf die Tatsache zurückzuführen gespeichert zuzugreifen, dass die freiliegenden Informationen sind nicht reale Geräte. Die einzige Möglichkeit, auf diese Daten zuzugreifen, besteht darin, dies manuell zu tun.

+0

Verwenden Sie Da Sie diese mit dem Stichwort 'Unix-programming', ist' eine Möglichkeit awk'? Das scheint der Weg des geringsten Widerstands zu sein, wenn es um das Parsen von Text geht. – SiegeX

+0

Vor einiger Zeit war ich auch auf der Suche nach etwas, und am Ende gab ich auf und schrieb mein eigenes, als ich erkannte, dass ich in allen Dateien wirklich nur an einem bestimmten Teil der Informationen interessiert war, also der Overhead war es lohnt sich nicht ... – Nim

Antwort

12

Die Kernel-Autoren haben sysfs-rules.txt veröffentlicht, die erläutert, wie sysfs verwendet werden muss. Sie weisen darauf hin, insbesondere

nicht libsysfs

+0

Nach der obigen Beschreibung habe ich mit 'libudev' gearbeitet, leider werden Geräte/Subsysteme in'/sys/devices/system' nicht aufgelistet. Gibt es einen besonderen Grund für dieses Verhalten? – grundprinzip

1

Ich trage deine Schuhe Ich würde wahrscheinlich meine eigene Lib schreiben. Da diese Bibliotheken nicht alle Ihre Anforderungen erfüllen (und wahrscheinlich auch nicht erfüllen werden). fstream ftw.

Verwandte Themen