树莓派 c获取树莓派CPU温度

C语言文件IO操作
    新建一个名为cpu-temp.c文件,文件的具体内容如下:
#include <stdio.h>
#include <stdlib.h> 

#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>

#define TEMP_PATH "/sys/class/thermal/thermal_zone0/temp"
#define MAX_SIZE 32
int main(void) 
{
    int fd;
    double temp = 0;
    char buf[MAX_SIZE];
    
    // 打开/sys/class/thermal/thermal_zone0/temp
    fd = open(TEMP_PATH, O_RDONLY);
    if (fd < 0) {
        fprintf(stderr, "failed to open thermal_zone0/temp\n");
        return -1;
    }
    
    // 读取内容
    if (read(fd, buf, MAX_SIZE) < 0) {
        fprintf(stderr, "failed to read temp\n");
        return -1;
    }
    
    // 转换为浮点数打印
    temp = atoi(buf) / 1000.0;
    printf("temp: %.2f\n", temp);
    
    // 关闭文件
    close(fd);
}


在cpu-temp.c目录下输入以下指令生成可执行文件,接着执行该文件。
引用
# 编译链接
gcc -o test cpu-temp.c
# 执行
./test
# 执行返回
temp: 49.2



c之出现warning: implicit declaration of function ‘read’ [-Wimplicit-function-declaration]这个问题

解决办法:
先执行下面命令看read在哪个头文件下面
引用
man read

加上头文件编译,问题就解决了
引用
#include <unistd.h>

猜你喜欢

转载自iaiai.iteye.com/blog/2410996