你可以使用Go语言中的os
和ioutil
包来读取文件并解析PCI设备信息。以下是一个示例代码:
package main
import (
"fmt"
"io/ioutil"
"os"
"path/filepath"
"strings"
)
func main() {
devicesPath := "/sys/bus/pci/devices/"
files, err := ioutil.ReadDir(devicesPath)
if err != nil {
fmt.Println("无法读取PCI设备目录:", err)
return
}
for _, file := range files {
devicePath := filepath.Join(devicesPath, file.Name())
vendorID, err := readDeviceAttribute(devicePath, "vendor")
if err != nil {
fmt.Println("无法读取Vendor ID:", err)
continue
}
deviceID, err := readDeviceAttribute(devicePath, "device")
if err != nil {
fmt.Println("无法读取Device ID:", err)
continue
}
fmt.Printf("设备: %s\nVendor ID: %s\nDevice ID: %s\n\n", file.Name(), vendorID, deviceID)
}
}
func readDeviceAttribute(devicePath string, attributeName string) (string, error) {
attrPath := filepath.Join(devicePath, attributeName)
data, err := ioutil.ReadFile(attrPath)
if err != nil {
return "", fmt.Errorf("无法读取属性 %s:%w", attributeName, err)
}
return strings.TrimSpace(string(data)), nil
}
这段代码会遍历/sys/bus/pci/devices/
目录下的所有PCI设备,并获取每个设备的Vendor ID和Device ID。你可以根据需要进行进一步处理或输出。
请注意,此代码需要在拥有足够权限的系统上运行,以便访问/sys目录中的设备信息。
内容由零声教学AI助手提供,问题来源于学员提问