POSIX.1定義了uname函數,它返回與當前主機和操作系統有關的信息。
#include <sys/utsname.h>int uname( struct utsname *name );返回值:若成功則返回非負值,若出錯則返回-1
通過該函數的參數向其傳遞一個utsname結構的地址,然后該函數填寫此結構。POSIX.1只定義了該結構中至少需要提供的字段(它們都是字符數組),而每個數組的長度則由實現確定。某些實現在該結構中提供了另外一些字段。
struct utsname { char sysname[]; /* name of the Operating system */ char nodename[]; /* name of this node */ char release[]; /* current release of operating system */ char version[]; /* current version of this release */ char machine[]; /* name of hardware type */};
每個字符串都以null字符結尾。utsname結構中的信息通常可以用uname(1)命令打印。
歷史上,BSD派生的系統提供了gethostname函數,它只返回主機名,該名字通常就是TCP/ip網絡主機上的名字。
#include <unistd.h>int gethostname( char *name, int namelen );返回值:若成功則返回0,若出錯則返回-1
namelen參數指定name緩沖區長度,如若提供足夠的空間,則通過name返回的字符串以null結尾。如若沒有提供足夠的空間,則沒有指定通過name返回的字符是否以null結尾。
現在,gethostname函數已定義為POSIX.1的一部分,它指定最大主機名長度是HOST_NAME_MAX。
hostname(1)命令可用來獲取和設置主機名。
本篇博文內容摘自《UNIX環境高級編程》(第二版),僅作個人學習記錄所用。關于本書可參考:http://www.apuebook.com/。
新聞熱點
疑難解答