分享几个实用的代码片段(附代码例子)
文章下方附学习资源,自助领取
今天给大家分享几个实用的代码小片段。获取CPU温度
应用可以定时获取CPU的温度,比如程序异常崩溃时,我们可能需要分析多方面原因,CPU温度就是其中之一。
代码:
左右滑动查看全部代码includestdio。hincludeunistd。hincludestdlib。hincludestring。hincludeerrno。hdefineCPUTEMPFILE0sysdevicesvirtualthermalthermalzone0tempstructcputemperature{intintegerpart;intdecimalpart;};typedefstructcputemperaturecputemperaturet;cputemperaturetgetcputemperature(constcharcputempfile){FILEfpNULL;cputemperaturetcputemperature{0};inttemp0;fpfopen(cputempfile,r);if(NULLfp){printf(fopenfileerror);returncputemperature;}fscanf(fp,d,temp);cputemperature。integerparttemp1000;cputemperature。decimalparttemp1000100;fclose(fp);returncputemperature;}intmain(intarc,charargv〔〕){cputemperaturetcputemperature{0};cputemperaturegetcputemperature(CPUTEMPFILE0);printf(cputemperatured。d,cputemperature。integerpart,cputemperature。decimalpart);return0;}
运行结果:
获取文件大小
有时候我们需要获取某个文件的大小,比如,如果需要发送文件里的内容,则需要知道文件的大小。
嵌入式物联网需要学的东西真的非常多,千万不要学错了路线和内容,导致工资要不上去!
无偿分享大家一个资料包,差不多150多G。里面学习内容、面经、项目都比较新也比较全!某鱼上买估计至少要好几十。
点击这里找小助理0元领取:嵌入式物联网学习资料(头条)
代码:
左右滑动查看全部代码includesysstat。hincludeunistd。hincludestdio。hlonggetfilesize(constcharfilename){FILEfpfopen(filename,r);if(NULLfp){printf(fopenerror);return1;}fseek(fp,0L,SEEKEND);longsizeftell(fp);fclose(fp);returnsize;}intmain(){defineFILENAME。getfilesizelongfilesizegetfilesize(FILENAME);printf(filesizeld,filesize);return0;}
运行结果:
获取时间戳
系统时间戳很常用,比如log输出时,可以附带时间戳数据,方便分析。
代码:
左右滑动查看全部代码includestdio。hincludeunistd。hincludestdlib。hincludestring。hincludeerrno。hincludesystime。hincludetime。hlonglonggetsystimems(void){longlongtimems0;structtimevalsyscurrenttime;gettimeofday(syscurrenttime,NULL);timems((longlong)syscurrenttime。tvsec1000000syscurrenttime。tvusec)1000;returntimems;}intmain(intarc,charargv〔〕){longlongcursystimegetsystimems();printf(cursystimelldms,cursystime);return0;}
运行结果:获取MAC
MAC地址,有时候会作为设备ID实用,作为设备唯一标识。
代码:
左右滑动查看全部代码includestdio。hincludenetif。hincludesysioctl。hincludeincludeunistd。hincludestring。hintgetnetifmac(constcharifrname,uint8tmac){int32tret1;structifreqmifreq;int32tsock0;socksocket(AFINET,SOCKSTREAM,0);if(sock0){printf(socketerrr);gotoerr;}strcpy(mifreq。ifrname,ifrname);retioctl(sock,SIOCGIFHWADDR,mifreq);if(ret0){printf(ioctlerr:dr,ret);gotoerr;}snprintf((char)mac,32,02x02x02x02x02x02x,(uint8t)mifreq。ifrhwaddr。sadata〔0〕,(uint8t)mifreq。ifrhwaddr。sadata〔1〕,(uint8t)mifreq。ifrhwaddr。sadata〔2〕,(uint8t)mifreq。ifrhwaddr。sadata〔3〕,(uint8t)mifreq。ifrhwaddr。sadata〔4〕,(uint8t)mifreq。ifrhwaddr。sadata〔5〕);return0;err:return1;}intmain(intargc,charargv){charmacstr〔32〕{0};getnetifmac(wlan1,macstr);printf(macs,macstr);return0;}
运行结果:
获取IP
有时候需要获取本机IP进行显示。
代码:
左右滑动查看全部代码includestdio。hincludenetif。hincludesysioctl。hincludeincludeunistd。hincludestring。hintgetlocalip(constcharifrname,charip){intret1;intsockfd;structsockaddrinsin;structifreqifr;sockfdsocket(AFINET,SOCKDGRAM,0);if(1sockfd){printf(socketerror);returnret;}strncpy(ifr。ifrname,ifrname,IFNAMSIZ);ifr。ifrname〔IFNAMSIZ1〕0;if(ioctl(sockfd,SIOCGIFADDR,ifr)0){printf(ioctlerror);close(sockfd);returnret;}memcpy(sin,ifr。ifraddr,sizeof(sin));intiplensnprintf(ip,32,s,inetntoa(sin。sinaddr));close(sockfd);retiplen;returnret;}intmain(intargc,charargv){charipstr〔32〕{0};getlocalip(wlan1,ipstr);printf(ips,ipstr);return0;}
运行结果:
以上就是本次分享的几个小的代码片段,如果觉得文章有帮助,麻烦帮忙转发,谢谢!
END
作者:杂烩君
来源:嵌入式大杂烩
本文转载自嵌入式微处理器,如有侵权,请联系删除
原文链接:分享几个实用的代码片段(附代码例子)
版权声明:本文来源网络,免费传达知识,版权归原作者所有。如涉及作品版权问题,请联系我进行删除。