获取CPU温度
应用可以定时获取CPU的温度,比如程序异常崩溃时,我们可能需要分析多方面原因,CPU温度就是其中之一。
代码:
左右滑动查看全部代码>>>
#include
#include
#include
#include
#include
#defineCPU_TEMP_FILE0"/sys/devices/virtual/thermal/thermal_zone0/temp"
structcpu_temperature
{
intinteger_part;
intdecimal_part;
};
typedefstructcpu_temperaturecpu_temperature_t;
cpu_temperature_tget_cpu_temperature(constchar*_cpu_temp_file)
{
FILE*fp=NULL;
cpu_temperature_tcpu_temperature={0};
inttemp=0;
fp=fopen(_cpu_temp_file,"r");
if(NULL==fp)
{
printf("fopenfileerror
");
returncpu_temperature;
}
fscanf(fp,"%d",&temp);
cpu_temperature.integer_part=temp/1000;
cpu_temperature.decimal_part=temp%1000/100;
fclose(fp);
returncpu_temperature;
}
intmain(intarc,char*argv[])
{
cpu_temperature_tcpu_temperature={0};
cpu_temperature=get_cpu_temperature(CPU_TEMP_FILE0);
printf("cpu_temperature=%d.%d℃
",cpu_temperature.integer_part,cpu_temperature.decimal_part);
return0;
}
运行结果:
获取文件大小
有时候我们需要获取某个文件的大小,比如如果需要发送文件里的内容,则需要知道文件的大小。
代码:
左右滑动查看全部代码>>>
#include
#include
#include
longget_file_size(constchar*_file_name)
{
FILE*fp=fopen(_file_name,"r");
if(NULL==fp)
{
printf("fopenerror
");
return-1;
}
fseek(fp,0L,SEEK_END);
longsize=ftell(fp);
fclose(fp);
returnsize;
}
intmain()
{
#defineFILE_NAME"./get_file_size"
longfile_size=get_file_size(FILE_NAME);
printf("file_size=%ld
",file_size);
return0;
}
运行结果:
获取时间戳
系统时间戳很常用,比如log输出时,可以附带时间戳数据,方便分析。
代码:
左右滑动查看全部代码>>>
#include
#include
#include
#include
#include
#include
#include
longlongget_sys_time_ms(void)
{
longlongtime_ms=0;
structtimevalsys_current_time;
gettimeofday(&sys_current_time,NULL);
time_ms=((longlong)sys_current_time.tv_sec*1000000+sys_current_time.tv_usec)/1000;
returntime_ms;
}
intmain(intarc,char*argv[])
{
longlongcur_sys_time=get_sys_time_ms();
printf("cur_sys_time=%lldms
",cur_sys_time);
return0;
}
运行结果:
获取MAC
MAC地址,有时候会作为设备ID实用,作为设备唯一标识。
代码:
左右滑动查看全部代码>>>
#include
#include
#include
#include
#include
#include
intget_netif_mac(constchar*_ifr_name,uint8_t*_mac)
{
int32_tret=-1;
structifreqm_ifreq;
int32_tsock=0;
sock=socket(AF_INET,SOCK_STREAM,0);
if(sock< 0)
{
printf("socketerr
");
gotoerr;
}
strcpy(m_ifreq.ifr_name,_ifr_name);
ret=ioctl(sock,SIOCGIFHWADDR,&m_ifreq);
if(ret< 0)
{
printf("ioctlerr:%d
",ret);
gotoerr;
}
snprintf((char*)_mac,32,"%02x%02x%02x%02x%02x%02x",(uint8_t)m_ifreq.ifr_hwaddr.sa_data[0],
(uint8_t)m_ifreq.ifr_hwaddr.sa_data[1],
(uint8_t)m_ifreq.ifr_hwaddr.sa_data[2],
(uint8_t)m_ifreq.ifr_hwaddr.sa_data[3],
(uint8_t)m_ifreq.ifr_hwaddr.sa_data[4],
(uint8_t)m_ifreq.ifr_hwaddr.sa_data[5]);
return0;
err:
return-1;
}
intmain(intargc,char**argv)
{
charmac_str[32]={0};
get_netif_mac("wlan1",mac_str);
printf("mac=%s
",mac_str);
return0;
}
运行结果:
获取IP
有时候需要获取本机IP进行显示。
代码:
左右滑动查看全部代码>>>
#include
#include
#include
#include
#include
#include
intget_local_ip(constchar*_ifr_name,char*_ip)
{
intret=-1;
intsockfd;
structsockaddr_insin;
structifreqifr;
sockfd=socket(AF_INET,SOCK_DGRAM,0);
if(-1==sockfd)
{
printf("socketerror
");
returnret;
}
strncpy(ifr.ifr_name,_ifr_name,IFNAMSIZ);
ifr.ifr_name[IFNAMSIZ-1]=0;
if(ioctl(sockfd,SIOCGIFADDR,&ifr)< 0)
{
printf("ioctlerror
");
close(sockfd);
returnret;
}
memcpy(&sin,&ifr.ifr_addr,sizeof(sin));
intip_len=snprintf(_ip,32,"%s",inet_ntoa(sin.sin_addr));
close(sockfd);
ret=ip_len;
returnret;
}
intmain(intargc,char**argv)
{
charip_str[32]={0};
get_local_ip("wlan1",ip_str);
printf("ip=%s
",ip_str);
return0;
}
运行结果:
以上就是本次分享的几个小的代码片段。
如果觉得文章有帮助,麻烦帮忙转发,谢谢!
审核编辑:汤梓红
-
cpu
+关注
关注
68文章
10863浏览量
211805 -
代码
+关注
关注
30文章
4788浏览量
68629
原文标题:分享几个实用的代码片段(附代码例子)
文章出处:【微信号:嵌入式与Linux那些事,微信公众号:嵌入式与Linux那些事】欢迎添加关注!文章转载请注明出处。
发布评论请先 登录
相关推荐
评论