版權所有 © 2014 tutorialspoint
uname - 獲取當前核心的名稱和資訊
#include <sys/utsname.h> int uname(struct utsname *buf);
int uname(struct utsname *buf);
uname() 將系統資訊返回到 buf 指向的結構體中。utsname 結構體在 <sys/utsname.h> 中定義。
struct utsname { char sysname[]; char nodename[]; char release[]; char version[]; char machine[]; #ifdef _GNU_SOURCE char domainname[]; #endif };
struct utsname 中陣列的長度未指定;欄位以空位元組 (’’ ’) 結尾。
成功時,返回零。發生錯誤時,返回 -1,並且 errno 被相應地設定。
domainname 成員(NIS 或 YP 域名)是 GNU 擴充套件。
為此,Linux 使用系統呼叫 sethostname(2) 和 setdomainname(2)。請注意,沒有標準規定由 sethostname(2) 設定的主機名與 uname() 返回的結構體的 nodename 欄位是相同的字串(實際上,某些系統允許 256 位元組的主機名和 8 位元組的節點名),但在 Linux 上確實如此。對於 setdomainname(2) 和 domainname 欄位也是如此。
結構體中欄位的長度各不相同。某些作業系統或庫使用硬編碼的 9 或 33 或 65 或 257。其他系統使用 SYS_NMLN 或 _SYS_NMLN 或 UTSLEN 或 _UTSNAME_LENGTH。顯然,使用任何這些常量都是一個壞主意;只需使用 sizeof(...)。通常選擇 257 以便為網際網路主機名留出空間。
已經存在三個 Linux 系統呼叫 uname()。第一個使用長度 9,第二個使用 65,第三個也使用 65 但添加了 domainname 欄位。
也可以透過 sysctl() 和 /proc/sys/kernel/{ostype, hostname, osrelease, version, domainname} 訪問 utsname 資訊的一部分。
uname (1)
getdomainname (2)
gethostname (2)
廣告