獲取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;
}
運行結果:
獲取文件大小
有時候我們需要獲取某個文件的大小,比如如果需要發(fā)送文件里的內容,則需要知道文件的大小。
代碼:
左右滑動查看全部代碼>>>
#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;
}
運行結果:
獲取時間戳
系統(tǒng)時間戳很常用,比如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(sock0)
{
printf("socketerr
");
gotoerr;
}
strcpy(m_ifreq.ifr_name,_ifr_name);
ret=ioctl(sock,SIOCGIFHWADDR,&m_ifreq);
if(ret0)
{
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;
}
運行結果:
以上就是本次分享的幾個小的代碼片段。
如果覺得文章有幫助,麻煩幫忙轉發(fā),謝謝!
審核編輯:湯梓紅
-
cpu
+關注
關注
68文章
10870瀏覽量
211896 -
代碼
+關注
關注
30文章
4790瀏覽量
68653
原文標題:分享幾個實用的代碼片段(附代碼例子)
文章出處:【微信號:嵌入式與Linux那些事,微信公眾號:嵌入式與Linux那些事】歡迎添加關注!文章轉載請注明出處。
發(fā)布評論請先 登錄
相關推薦
評論