獲取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(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;
}
運行結果:

以上就是本次分享的幾個小的代碼片段。
如果覺得文章有幫助,麻煩幫忙轉發,謝謝!
審核編輯:湯梓紅
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。
舉報投訴
-
cpu
+關注
關注
68文章
11281瀏覽量
225079 -
代碼
+關注
關注
30文章
4968瀏覽量
73999
原文標題:分享幾個實用的代碼片段(附代碼例子)
文章出處:【微信號:嵌入式與Linux那些事,微信公眾號:嵌入式與Linux那些事】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
熱點推薦
【DIY掃地機器人】第四篇----動起來,動起來
把它做成六棱柱,于是又狠狠賺了一筆,后來又有人在一端加上個橡皮頭,這個人又狠狠賺了一筆。。。。。。希望我的小車加桑抹布,也能狠狠賺一筆,嘎嘎嘎。看幾個代碼片段,外部中斷紅外解碼的控制小車行動的,主函數
發表于 03-18 18:03
GoldWave如何裁剪音樂片段
GoldWave(http://www.goldwave.cc/)是一款非常優秀的音樂編輯軟件,我們可以使用該軟件做出各種聲音,下面就跟大家分享一下我們做鈴聲的時候經常用GoldWave裁剪音樂片段
發表于 12-20 16:59
請問我可以學習任何USAT匯編代碼片段來獲得USTAR1的運行嗎?
嗨,伙計們,對于PIC32 MX460我可以學習任何USAT匯編代碼片段來獲得USTAR1的運行嗎?請讓我知道。謝謝大家,祝你們有美好的一天。Pete: 以上來自于百度翻譯 以下為原文 Hi
發表于 06-19 10:05
求提供一個使用IOBUF原語的小型VHDL代碼片段
嗨,有人可以為我提供一個使用IOBUF原語的小型VHDL代碼片段。帶著敬意vjose2以上來自于谷歌翻譯以下為原文Hi , Can someone provide me with an small
發表于 06-27 09:01
在RT-Thread studio中Codeexpander代碼片段軟件不起作用是什么原因
不知道有沒有人使用Codeexpander代碼片段管理軟件,在VScode、keil中,都可以使用,給自己寫好的代碼片段設置一個快捷鍵比如sthread,就可以直接輸入自己編寫的thr
發表于 08-30 14:20
在RT-Thread studio中Codeexpander代碼片段軟件不起作用是何原因?
不知道有沒有人使用Codeexpander代碼片段管理軟件,在VScode、keil中,都可以使用,給自己寫好的代碼片段設置一個快捷鍵比如sthread,就可以直接輸入自己編寫的thr
發表于 02-10 14:21
為ESP8266編寫一個TCP服務器程序,無法找到要在我的程序中聲明的正確包含文件是怎么回事?
我正在嘗試為 ESP8266 編寫一個 TCP 服務器程序,并且我正在按照 ESP8266 RTOS SDK 1.4.0 編程指南進行操作。該指南提供了幾個代碼片段,關于簡單的 TCP 套接字,它們
發表于 06-12 07:13
如何在原理圖和PCB中創建代碼片段
在電路板設計中成功地將電路連接在電路板上,包括元器件和布線,關鍵在于元器件的設計。在原理圖和PCB中創建兩個匹配Snippets時,您需要為元器件創建獨特的指示符。本文介紹了將兩個原理圖和PCB片段連接在一起的成功關鍵,從而重新使用電路,節省寶貴的時間和金錢。
發表于 04-30 14:01
?3200次閱讀
華為移動服務中接觸衛士的代碼片段
簡介 該項目是華為移動服務中接觸衛士的代碼片段,主要包括:密鑰管理、藍牙(BLE)任務管理、密鑰文件分析、數據存儲。本項目還提供了示例代碼,為您展示如何在已集成Google Exposure
發表于 04-13 09:45
?5次下載
20個解決日常問題的Python代碼片段!
在本文中,將分享20 個 Python 代碼片段,以幫助你應對日常編程挑戰。你可能已經知道其中一些片段,但有些其他片段對你來說可能是新的。趕緊使用這些有用的 Python
30秒就能學會的代碼片段
今天給大家帶來一些30秒就能學會的代碼片段,這些代碼潛力無限,蘊含了豐富的python編程思維,應用領域非常廣泛,而且學起來非常簡單。 1."二維列表" **解讀:**根據給定的長和寬,以及初始值
分享的幾個小的代碼片段
評論