不能让libsensors正常工作

时间:2015-09-29 22:05:02

标签: c linux

这是关于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时,它运行得非常好。我看到了几个核心和芯片的临时性。

我在这里的一些帖子中实现了这个代码,坦率地说,我完全不了解它。

1 个答案:

答案 0 :(得分:1)

发布 @user3629249 条评论作为社区答案。


需要先调用sensors_init(),否则筹码列表为空。

此函数需要一个 sensors 配置文件作为参数,或者 NULL 使用默认配置文件。

此外,您可以在此相关问题中找到用法示例:Has anyone been able to use libsensors properly?