这是关于libsensors的代码。 库:
#include <unistd.h>
#include <sensors/sensors.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <stdlib.h>
#include <arpa/inet.h>
#include <stdio.h>
#include <string.h>
#include <math.h>
关于libsensors的代码:
char sd[16384]="^\0",bf[1];
char buf2[8192]="^\0";
sensors_chip_name const* scn;
int c=0;
int t4=1;
while((scn=sensors_get_detected_chips(0,&c))!=0)
{
sensors_feature const *fea;
int f=0;
strcat(sd,scn->prefix);
printf("%s",scn->prefix);
strcat(sd,":");
strcat(sd,scn->path);
strcat(sd,"(");
while((fea=sensors_get_features(scn,&f))!=0)
{
strcat(sd,fea->name);
strcat(sd,"(");
sensors_subfeature const *sb;
int s=0;
while((sb=sensors_get_all_subfeatures(scn,fea,&s))!=0)
{
t4++;
strcat(sd,sb->name);
strcat(sd,",");
int t3=-1;
int i=0;
char t8[sizeof(sb->number)];
memcpy(&t8,&(sb->number),sizeof(sb->number));
strcat(sd,t8);
strcat(sd,"!");
}
strcat(sd,")");
}
strcat(sd,")");
}
所以当我尝试打印时,没有任何事情发生。名为sd
的char数组返回空。似乎没有传感器可供阅读。
当我从终端运行sensors
时,它运行得非常好。我看到了几个核心和芯片的临时性。
我在这里的一些帖子中实现了这个代码,坦率地说,我完全不了解它。
答案 0 :(得分:1)
发布 @user3629249 条评论作为社区答案。
需要先调用sensors_init()
,否则筹码列表为空。
此函数需要一个 sensors
配置文件作为参数,或者 NULL
使用默认配置文件。
此外,您可以在此相关问题中找到用法示例:Has anyone been able to use libsensors properly?