有很多与此类似的问题,但是我还没有找到解决方案。
我如何在Linux Ubuntu 12.10上用C或C++获得CPU温度而不调用 sensors
?我当然可以从文件中读取它,但是我找不到它在12.10中的存储位置。并且仅仅是读取文本文件的可能性而已吗?或者我可以使用系统调用或信号查询内核吗?
我的文件夹/proc/acpi/的内容仅仅是
event wakeup
那里没有THEMP0或类似的东西。
sensors
应用程序可以在我的机器上显示温度。没有
/sys/class/thermal/thermal_zone0/
目录在
/sys/class/thermal
我有cooling_device0@ cooling_device1@ cooling_device2@ cooling_device3@
我正在尝试浏览lm-sensors源代码以寻找如何检索温度,但到目前为止没有任何结果,但是我很接近。该文件是
http://lm-sensors.org/browser/lm-sensors/trunk/lib/sysfs.c
特别是:
846行:
846 int sensors_read_sysfs_attr(const sensors_chip_name *name,
847 const sensors_subfeature *subfeature,
848 double *value)
最佳答案
根据sysfs documentation,传感器信息存储在/sys/class/hwmon
下,每个芯片的目录不同。这与我在Ubuntu 13.10上看到的输出一致。
传感器使用的文件是:
/sys/class/hwmon/hwmon*/device/temp*
根据芯片/虚拟设备的数量,可能有许多
hwmon
目录。我的双核系统上的输出:
$ pwd
/sys/class/hwmon
$ ls -l
total 0
lrwxrwxrwx 1 root root 0 May 17 14:29 hwmon0 -> ../../devices/virtual/hwmon/hwmon0
lrwxrwxrwx 1 root root 0 May 17 14:29 hwmon1 -> ../../devices/platform/coretemp.0/hwmon/hwmon1
lrwxrwxrwx 1 root root 0 May 17 14:29 hwmon2 -> ../../devices/pci0000:00/0000:00:01.0/0000:01:00.0/hwmon/hwmon2
其中
hwmon1
是我的CPU之一:$ pwd
/sys/class/hwmon/hwmon1/device
$ ls -l
total 0
lrwxrwxrwx 1 root root 0 May 17 14:29 driver -> ../../../bus/platform/drivers/coretemp
drwxr-xr-x 3 root root 0 May 17 14:29 hwmon
-r--r--r-- 1 root root 4096 May 17 23:21 modalias
-r--r--r-- 1 root root 4096 May 17 14:29 name
drwxr-xr-x 2 root root 0 May 17 23:21 power
lrwxrwxrwx 1 root root 0 May 17 14:29 subsystem -> ../../../bus/platform
-r--r--r-- 1 root root 4096 May 17 14:29 temp2_crit
-r--r--r-- 1 root root 4096 May 17 14:29 temp2_crit_alarm
-r--r--r-- 1 root root 4096 May 17 14:29 temp2_input
-r--r--r-- 1 root root 4096 May 17 23:11 temp2_label
-r--r--r-- 1 root root 4096 May 17 14:29 temp2_max
-r--r--r-- 1 root root 4096 May 17 14:29 temp3_crit
-r--r--r-- 1 root root 4096 May 17 14:29 temp3_crit_alarm
-r--r--r-- 1 root root 4096 May 17 14:29 temp3_input
-r--r--r-- 1 root root 4096 May 17 23:11 temp3_label
-r--r--r-- 1 root root 4096 May 17 14:29 temp3_max
-rw-r--r-- 1 root root 4096 May 17 14:29 uevent
temp2*
和temp3*
中的值分别对应于core 0
和core 1
。基本上,这些是sensors
从中读取数据的文件。根据您所拥有的硬件设备,带有温度信息的CPU目录(在我的情况下为hwmon1
)可能会有所不同。关于c++ - 使用AMD FX 4100四核在linux ubuntu 12.10上获取CPU温度,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/23716135/