2011-01-12 8 views
8

Jądro Linuksa udostępnia informacje o bieżącym środowisku za pomocą systemu plików sysfs w/sys. Chciałbym uzyskać informacje na temat procesorów online i ich hierarchii pamięci (pamięci podręczne poziomu 1 do poziomu 3).Jaki jest najlepszy sposób przetwarzania zawartości sysfs przy użyciu C/C++?

Ponieważ wszystkie te informacje są w zasadzie plikami tekstowymi, mógłbym napisać sam parser, ale jestem ciekawy, jaki jest najlepszy sposób przetwarzania informacji w systemie Sysfs. Obecnie znalazłem dwie alternatywy:

libsysfs

i

libudev

Wadą libsysfs wydaje się, że kod jest już prawie 5 lat i prawie nie ma dokumentacja jest dostępna, libudev wydaje bardziej aktywny, ale dokumentacja jest dość rzadka. Był tylko jeden przydatny samouczek, który znalazłem pod adresem: libudev - http://www.signal11.us/oss/udev/ Jaki jest najnowocześniejszy sposób przetwarzania treści z sysfs w C/C++?

[Aktualizacja]

Obecnie nie jest możliwe, aby uzyskać dostęp do danych przechowywanych w /sys/devices/system ze względu na fakt, że narażona informacje nie są prawdziwe urządzenia. Jedynym sposobem uzyskania dostępu do tych danych jest zrobienie tego ręcznie.

+0

Ponieważ określili to z 'Unix programming', jest' awk' możliwość? To wydaje się być ścieżką najmniejszego oporu, jeśli chodzi o parsowanie tekstu. – SiegeX

+0

Jakiś czas temu też szukałem czegoś do tego, a na koniec dałem i napisałem własne, ponieważ zdałem sobie sprawę, że we wszystkich plikach naprawdę interesowało mnie tylko trochę informacji, więc koszty ogólne nie warto ... – Nim

Odpowiedz

12

Autorzy kernela opublikowali sysfs-rules.txt, który wyjaśnia, w jaki sposób należy używać sysfs. Wskazują oni, w szczególności

Nie używaj libsysfs

+0

Po powyższym opisie pracowałem z 'libudev' niestety nie ma listy urządzeń/podsystemów w'/sys/devices/system' czy istnieje szczególny powód takiego zachowania? – grundprinzip

1

nosząc twoje buty prawdopodobnie napisałbym własną bibliotekę. Ponieważ te biblioteki mogą nie (i prawdopodobnie nie) spełnią wszystkie twoje wymagania. fstream ftw.

Powiązane problemy