以lm-sensors为例,lm-sensors是一个能够监视硬件环境信息的开源软件,能够打印主板环境温度,cpu温度,风扇转速等。编译后生成的可执行程序为sensors。
执行sensors后会显示如下:
1 w83627dhg-isa-0290
2 Adapter: ISA adapter
3 Vcore: +1.22 V (min = +0.00 V, max = +1.74 V)
4 +12V: +29.18 V (min = +18.56 V, max = +3.20 V) ALARM
5 3.3V 3VCC: +3.26 V (min = +2.77 V, max = +0.72 V) ALARM
6 5V: +6.02 V (min = +6.40 V, max = +1.31 V) ALARM
7 CpuVcc: +1.55 V (min = +0.25 V, max = +1.51 V) ALARM
8 1.5V: +1.05 V (min = +1.46 V, max = +1.76 V) ALARM
9 3VSB: +3.22 V (min = +1.04 V, max = +2.69 V) ALARM
10 VBAT: +3.17 V (min = +2.88 V, max = +1.76 V) ALARM
11 FAN1: 5192 RPM (min = 1562 RPM, div = 4)
12 FAN3: 6490 RPM (min = 9375 RPM, div = 4) ALARM
13 FAN2: 0 RPM (min = 10546 RPM, div = 128) ALARM
14 FAN4: 5113 RPM (min = 1562 RPM, div = 4)
15 System temp: +26.0°C (high = +46.0°C, hyst = -90.0°C) sensor = thermistor
16 CPU temp: +29.5°C (high = +80.0°C, hyst = +75.0°C) sensor = thermistor
17 intrusion0: ALARM
现在要求只显示风扇,温度等信息,可使用如下代码实现:以风扇为例
1 #include "stdio.h"
2 #include "string.h"
3 int main(){
4 int nchars=0;
5 FILE *fp1;
6 FILE *fp2;
7 char c;
8 fp1=fopen("/home/zhangmiaoling/sensors.txt","r");
9 if(NULL == fp1)
10 {
11 printf("failed to open sensors\n");
12 return 1;
13 }
14 fp2=fopen("/home/zhangmiaoling/sensors.txt","r");
15 if(NULL == fp2)
16 {
17 printf("failed to open sensors\n");
18 return 1;
19 }
20 while((c=getc(fp1))!=EOF){
21 nchars++;
22 if (c=='\n'){
23 char s[nchars+1];
24 memset(s,0,(nchars+1)*sizeof(char));
25 fgets(s,nchars+1,fp2);/*用fgets读一行到数组s中*/
26 // printf("%s\n",s);
27 if((s[0]=='F')&&(s[1]=='A')&&(s[2]=='N')){
28 printf("%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c\n",s[0],s[1],s[2],s[3],s[4],s[5],s[6],s[7], s[8],s[9],s[10],s[11],s[ 12],s[13],s[14],s[15],s[16],s[17],s[18],s[19],s[20]);
29 memset(s,0,(nchars+3)*sizeof(char));
30 }
31 nchars=0;
32 }
33 }
34 fclose(fp1);
35 fclose(fp2);
36 return 0;
37 }