有很多与此类似的问题,但是我还没有找到解决方案。

我如何在Linux Ubuntu 12.10上用C或C++获得CPU温度而不调用 sensors?我当然可以从文件中读取它,但是我找不到它在12.10中的存储位置。并且仅仅是读取文本文件的可能性而已吗?或者我可以使用系统调用或信号查询内核吗?

我的文件夹/p​​roc/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 0core 1。基本上,这些是sensors从中读取数据的文件。根据您所拥有的硬件设备,带有温度信息的CPU目录(在我的情况下为hwmon1)可能会有所不同。

关于c++ - 使用AMD FX 4100四核在linux ubuntu 12.10上获取CPU温度,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/23716135/

10-13 07:55