package services import ( "bufio" "cmii-uav-watchdog-common/models" "fmt" "os" "strings" ) // NewCPUInfo 创建一个默认的 CPUInfo func NewCPUInfo() models.CPUInfo { return models.CPUInfo{ ModelName: "unknown", Cores: 0, Architecture: "unknown", } } // parseLine 解析单行 CPU 信息 func parseLine(line string, cpuInfo *models.CPUInfo) { if strings.HasPrefix(line, "model name") { cpuInfo.ModelName = strings.TrimSpace(strings.Split(line, ":")[1]) } else if strings.HasPrefix(line, "cpu cores") { if _, err := fmt.Sscanf(line, "cpu cores\t: %d", &cpuInfo.Cores); err != nil { fmt.Println("Error parsing cpu cores:", err) } } else if strings.HasPrefix(line, "Architecture") { cpuInfo.Architecture = strings.TrimSpace(strings.Split(line, ":")[1]) } } // getCPUInfo 获取 CPU 信息 func GetCPUInfo() models.CPUInfo { cpuInfo := NewCPUInfo() file, err := os.Open("/proc/cpuinfo") if err != nil { fmt.Println("Error opening /proc/cpuinfo:", err) return cpuInfo // 返回默认值 } defer func() { if err := file.Close(); err != nil { fmt.Println("Error closing /proc/cpuinfo:", err) } }() scanner := bufio.NewScanner(file) for scanner.Scan() { parseLine(scanner.Text(), &cpuInfo) } if err := scanner.Err(); err != nil { fmt.Println("Error reading /proc/cpuinfo:", err) return cpuInfo // 返回默认值 } return cpuInfo } /* CPU模型名称: Intel(R) Core(TM) i7-8565U CPU @ 1.80GHz 核心数量: 4 架构信息: x86_64 */