我在C代码中使用execv
来运行lshw
命令以获取CPU、磁盘和内存信息。但我希望能够从/proc
或任何其他已存在的数据中搜索到这些信息。有什么建议吗?以下是我的代码:
char *params[9] = {"/usr/bin/lshw", "-short", "-c", "disk",
"-c", "memory", "-c", "processor", 0}; //cmd params filled
execv(params[0], params);
Linux命令:$ sudo lshw -short -c disk -c processor -c memory
$ sudo lshw -short -c disk -c processor -c memory
H/W path Device Class Description
======================================================
/0/0 memory 64KiB BIOS
/0/22 memory 16GiB System Memory
/0/22/0 memory DIMM Synchronous [empty]
/0/22/1 memory DIMM Synchronous [empty]
/0/22/2 memory 8GiB DIMM Synchronous 2133 MHz (0.5 ns)
/0/22/3 memory 8GiB DIMM Synchronous 2133 MHz (0.5 ns)
/0/2a memory 256KiB L1 cache
/0/2b memory 1MiB L2 cache
/0/2c memory 6MiB L3 cache
/0/2d processor Intel(R) Xeon(R) CPU D-1521 @ 2.40GHz
/0/1/0.0.0 /dev/sda disk 16GB SATADOM-SH 3IE3
/0/2/0.0.0 /dev/sdb disk 120GB Patriot Blaze
我有两个问题:
- 在哪里可以找到一个指南来解析
/proc
中的文件以获取这些硬件信息? - 我需要跟踪
lshw
的源代码才能找出lshw
是做什么的吗?
/proc
文件系统的指南。
lshw
从/sys/firmware/dmi/tables/
读取原始数据,和dmidecode
一样。而且dmidecode
是用C写的,相对于lshw
用CPP来说,C更容易些。 - charles.cc.hsu