6.9 系统标识

6.9 系统标识

POSIX1定义了uname函数,它返回与当前主机和操作系统有关的信息。

#include <sys/utsname.h>

int uname(struct utsname *name);//返回:若成功为非负值,出错为-1


通过该函数的参数向其传递一个utsname结构的地址,然后该函数填写此结构。POSIX.1只定义了该结构中最少需要的字段(它们都是字符数组),而每个数组的长度则由实现确定。某些实现在该结构中提供了另外一些字段。在历史上,系统V为每个数组分配9个字节,其中有1个字节用于字符串结束符(null字符)。

struct utsname {

char sysname[9]; //name of the operating system */操作系统名

char nodename[9]; // name of this node */ 此节点名

char release[9]; //current release of operating system */操作系统当前发行版

char version[9]; //current version of this release */此发行版的当前版

char machine[9]; //name of hardware type */硬件类型名

};


在utsname结构中的信息通常可用uname(1)命令打印。

POSIX.1警告:nodename元素可能并不适用于在一通信网络上引用当前主机。此函数来自于系统V,在较早时期,nodename元素适用于在UUCP网络上引用主机。

历史上,BSD派生的系统提供了gethostname函数,它只返回当前主机名。这通常就是在TCP/IP网上该当前主机的名字。

#include <unistd.h>
int gethostname(char *name,int namelen);//返回:若成功为0,出错为-1

通过name返回的字符串以null符结尾(除非没有提供足够的空间)。<sys/param.h>中的常数MAXHOSTNAMELEN规定了此名字的最大长度(通常是64字节)。如果该当前主机联到TCP/IP网,则此当前主机名通常是该当前主机的完整的域名。

hostname(1)命令可用来存取和设置当前主机名。(超级用户用一个类似的函数sethostname来设置当前主机名。)当前主机名通常在系统自举时设置,它由/etc/rc取自一个启动文件。

原文地址:https://www.cnblogs.com/shaoguangleo/p/2805998.html