dmidecode
列出了各种硬件参数,包括实际安装的DRAM模块的大小、型号和序列号。
在不使用system()
和解析输出文本的情况下,是否存在通过C/C ++获得相同信息的编程接口?
例如:
dmidecode --type 17
# dmidecode 2.12
SMBIOS 2.7 present.
Handle 0x0043, DMI type 17, 34 bytes
Memory Device
Array Handle: 0x0042
Error Information Handle: Not Provided
Total Width: 64 bits
Data Width: 64 bits
Size: 4096 MB
Form Factor: DIMM
Set: None
Locator: ChannelA-DIMM0
Bank Locator: BANK 0
Type: DDR3
Type Detail: Synchronous
Speed: 1600 MHz
Manufacturer: 0711
Serial Number: 00000000
Asset Tag: 9876543210
Part Number: PUD31600C114G2VS
Rank: 1
Configured Clock Speed: 1600 MHz
Handle 0x0044, DMI type 17, 34 bytes
Memory Device
Array Handle: 0x0042
Error Information Handle: Not Provided
Total Width: Unknown
Data Width: Unknown
Size: No Module Installed
1条答案
按热度按时间nafvub8i1#
dmidecode似乎从这些二进制文件中获取数据
/sys/固件/dmi/表/DMI
/sys/固件/dmi/表/smbios入口点
有一个解析它们的库
https://github.com/brunexgeek/smbios-parser
对我来说,它确实起到了作用。我遇到的唯一不一致是获取系统的UUID。显然,这是因为在某个时候,字节顺序发生了变化,如dmidecode手册页所述。解决这些问题的方法可能是从/sys/class/dmi/id/product_uuid获取UUID