首页 > 系统相关 >Linux下获取CPU温度

Linux下获取CPU温度

时间:2023-12-01 10:59:53浏览次数:45  
标签:std temperature temp 获取 thermal Linux buf CPU

不同架构的CPU,CPU温度所在的系统文件有区别
CPU温度相关的系统文件位于

cd /sys/class/thermal

可以看到文件夹下有很多命名为thermal_zone{n}的文件夹
以thermal_zone0文件夹为例

cat /sys/class/thermal/thermal_zone0/type

可以获取到thermal_zone0设备的类型
对x86架构的CPU,type应为x86_pkg_temp;而arm架构的CPU,type为CPU-therm
对thermal_zone0到thermal_zone{n}文件夹遍历,找到对应的文件夹
以thermal_zone0文件夹为例

cat /sys/class/thermal/thermal_zone0/temp

可以获取到当前设备的温度

C++实现

#include <string>
#include <fstream>
#include <iostream>

class CpuMonitor {
public:
    double GetTemperature() {
        if (cpu_temp_fs_.is_open()) {
            std::string buf;
            cpu_temp_fs_ >> buf;
            cpu_temp_fs_.seekg(0);

            try {
                double temperature = std::stoi(buf) / 10;
                temperature /= 100;
                return temperature;
            } catch (...) {
            }
        }
        double temperature = -1.0;
        for (int i = 0; temperature < 0; ++i) {
            temperature = GetTemperature(i);
            if (temperature == -2.0) {
                return -1.0;
            }
        }
        return temperature;
    }

private:
    double GetTemperature(int n) {
        std::string path = "/sys/class/thermal/thermal_zone" + std::to_string(n);
        std::fstream f;
        f.open(path + "/type", std::ios::in);
        if (!f.good()) {
            return -2.0;
        }
        std::string buf;
        f >> buf;
        f.seekg(0);
#ifdef __aarch64__
        std::string type = "CPU-therm";
#else
        std::string type = "x86_pkg_temp";
#endif
        if (type != buf) {
            return -1.0;
        }
        cpu_temp_fs_.open(path + "/temp", std::ios::in);
        cpu_temp_fs_ >> buf;
        cpu_temp_fs_.seekg(0);

        try {
            double temperature = std::stoi(buf) / 10;
            temperature /= 100;
            return temperature;
        } catch (...) {
        }
        return -1.0;
    }

private:
    std::fstream cpu_temp_fs_;
};

int main() {
    CpuMonitor m;
    std::cout << m.GetTemperature() << "\n";
    return 0;
}

标签:std,temperature,temp,获取,thermal,Linux,buf,CPU
From: https://www.cnblogs.com/umichan0621/p/17869198.html

相关文章

  • 查看linux的磁盘读写io占用情况,需要新装软件
    查看linux的磁盘读写io占用情况 要查看Linux系统上的磁盘读写IO占用情况,您可以使用一些命令和工具来监视磁盘活动。以下是一些常用的方法:iostat命令:iostat是一个系统监视工具,可以显示关于CPU、磁盘、TTY等的统计信息。要查看磁盘IO统计信息,可以使用以下命令:ba......
  • ESXi 主机的 CPU Ready值的范围
    ESXi主机的CPUReady值是指虚拟机在获取CPU资源之前等待的时间。CPUReady值越高,表示虚拟机在等待CPU资源的时间越长,性能越差。根据VMware官方的建议,ESXi主机的CPUReady值的正常范围如下:**0<%RDY<=5%:**此为正常区间,表示虚拟机的性能不会受到明显影响。**5%......
  • Matlab获取鼠标坐标值的ginput()函数
    ​获取鼠标坐标值的第一种途径:利用Matlab7.0中figure的WindowButtonDownFcn属性。当你在图上按下鼠标的时候,可通过该属性定义一个回调程序。回调程序可以是一个有效的Matlab表达式或者一个M文件。那么为显示当前鼠标按下时的坐标值,我们可以将其定义为一个坐标获取和显示程序。......
  • linux系统部署nginx+php-fpm
    一、环境准备1、最小化安装linux操作系统:CentOSLinuxrelease7.9.2009(Core)2、根据需求下载nginx和php源码包nginx:http://nginx.org/en/download.html    php:https://www.php.net/releases/这里使用nginx-1.24.0.tar.gz和php-7.4.20.tar.gz版本......
  • Linux Mint(Ubuntu)系统VS Code C/C++环境配置include error问题
    1.问题描述安装完成LinuxMint后发现随系统自带了gcc,心里比较开心,以为自己不需要装了。但是在安装完VSCode之后,一直提示#includeerrorsdetected.PleaseupdateyourincludePath.Squigglesaredisabledforthistranslationunitlinux2.解决方案重新通过apt安装gcc......
  • Linux下通过AnySetup配置防火墙
     软件AnySetup主要功能主要功能是对Linux操作系统下的基本配置进行管理、多种服务配置进行管理、安全配置进行管理等。如:操作系统的升级管理,软件包的安装、更新和卸载管理,软件仓库源的管理,系统时间和时区的管理,系统语言环境的管理,网络环境的配置管理,系统服务的启动、关闭、......
  • linux学习记录(tmux、vim) 9.23
    tmux和vim1、tmux(1)分屏(2)允许把terminal断开之后,继续运行top命令,类似windows的任务管理器,显示各进程运行状况写一个文档或者代码的时候,在tmux里面写,不用担心断网tmux开一堆---->session开一堆(常用)---->window开一堆---->pane(常用)---->shell每一个pane都会打开一......
  • Linux文件管理详解
    Linux文件系统的体系结构
Linux文件系统采用层次结构,从根目录(/)开始,包含多个子目录和文件。文件系统之间通过虚拟文件系统(VFS)进行通信,VFS使得Linux可以支持多个不同的文件系统,每个表示一个VFS的通用接口。Linux文件系统组成
Linux文件系统主要由以下几部分组成:1.文件:文件是存......
  • 多种数据库获取最近一天记录的SQL整理
    多种数据库获取最近一天记录的SQL整理背景纯粹当笔记.数据库种类太多,记不住,每次都需要现查,效率实在是太低了将获取最近一天记录的SQL整理好方便后续直接his用简单总结Oracle+DM+神通的语法一样Kingbase+PG+Highgo的语法一样MySQL用的是SUB其他人都是......
  • Linux进程管理心得
    进程的含义为正在运行的程序,包括这个运行的程序所占用的系统资源。进程是具有一定独立功能的程序关于某个数据集合的一次运行活动,是系统进行资源分配和调度的一个独立单位。同一个程序,同一时刻被两次运行了,它们就是两个独立的进程。查看进程ps命令可查看静态进程。top命令可以实......