linux系統中如何通過程式來獲知系統資訊
最近在做乙個專案,遇到要在程式中動態的獲取裝置硬體資訊。糾結了我很長時間,今天突然發現原來在linux中有api函式直接就可以實現。對於好東西,當然要和大家share下了。
一.uname()函式
1.使用uname函式來實現
獲取系統資訊
1>函式原型
#include
int uname(str
uct utsname *buf);
2>函式功能:
該函式會告訴我們系統的相關資訊。
3>函式返回值
函式返回資訊存放在struct utsname結構體buf中,當函式成功時會返回0,當發生錯誤時會返回-1。
4>struct utsname的定義如下:
#include
struct utsname;
結構體成員描述如下:
ø sysname:表示正在使用的作業系統。對於linux而言,這個值為「linux」。
ø nodename: 表示裝置的主機名
ø release:作業系統發布號
ø version:作業系統版本號
ø machine代表主機的硬體型別,例如「i686」代表乙個奔騰cpu.
ø domainname返回主機的網域名稱
2.程式例項:
#include
#include
#include
#include
int main(int argc,char **argv)
printf(「sysname=%s\n」,u_name.sysname);
printf(「nodename=%s\n」,u_name.nodename);
printf(「release=%s\n」,u_name.release);
printf(「version=%s\n」,u_name.version);
printf(「machin=%s\n」,u_name.machine);
printf(「domainname=%s\n」,u_name.__domainname); }
二.gethostname和getdomainname函式
通過這兩個函式可以實現獲得裝置的主機名和網域名稱
1.gethostname()函式
1>函式功能:
可以用來確定當前的主機名。
2>函式原型:
#include
intgethostname(char *name,size_t len);
3>函式形參
ø name:接收緩衝區。
ø len:接收緩衝區的最大長度
4>函式返回值
如果函式執行成功,則返回零;如果發生錯誤則返回-1。錯誤號存放在外部變數errno中。
2.getdomainname()函式
1>函式功能
可以允許主機獲得程式正在執行的主機的nis網域名稱。
2>函式原型
#include
intgetdomainname(char *name,size_t len);
3>函式形參
ø name:接收緩衝區。
ø len:接收緩衝區的最大長度
4>函式返回值
如果函式執行成功,則返回零;如果發生錯誤則返回-1。錯誤號存放在外部變數errno中。
3.函式例項
#include
#include
#include
#include
#include
int main(int argc,char **argv)
printf(「host name:%s\n」,buf);
s =getdomainname(buf,sizeof(buf));
if(s <0)
printf(「the domain name=%s\n」,buf);
return 0;
}
通過程式來判斷系統大小端問題
計算機的儲存分為了大端模式 big endian 和小端模式 little endian 那麼究竟什麼是大端模式什麼是小端模式呢?二者有什麼區別,如何判斷乙個儲存系統是大端模式還是小端模式呢?這裡我自己總結了兩種方法來判斷乙個系統儲存是大端模式還是小端模式 1 void func int i 0x1...
linux系統下程式編譯過程
編譯過程 在linux系統下,使用gcc可以完成整個編譯過程,gcc是什麼?它並不是乙個編譯器,而是乙個驅動程式。編譯過程中每個環節由具體的元件負責,編譯過程由cc1負責 彙編過程由as彙編器負責 鏈結過程由ld負責。預編譯 預處理 我們在編譯程式時可以通過加 e選項告訴編譯器僅作預處理 gcc e...
談談如何通過linux系統RHCE考試
話說也工作了幾年時間,在工作中也經常遇到各種各樣的系統,但也無非就是windows,linux佔據了大部分的工作內容,windows基本上都是pc機維護,各種各樣的專業軟體,以及域服務之類的配置,而linux 主要是伺服器方面的配置,samba,nfs,之類的。大學過後基本上也就把老師教給自己的都還...