1.主机标识
每一台机器都有一个主机名,主机名由系统管理员指定,在网络中主机名可能是一个网络域名。
函数 gethostname() 和 sethostname() 可以用来获取和设置主机名。
函数原型如下所示:
#include<unstd.h> int gethostname(char *name, size_t size); int sethostname(const char *name, size_t length);
函数 uname() 可以用来查看运行该程序的计算机的操作系统版本信息和硬件信息。
#include<sys/utsname.h> int uname(struct utsname *info);
uname() 是一个系统调用,成功时返回非负整数,同时将操作系统和主机的信息保存在info所指向的数据结构中;失败时返回-1.
utsname结构成员如下所示:
成员 描述
char sysname[] 操作系统名
char nodename[] 计算机的主机名
char release[] 操作系统的当前版本号
char version[] 操作系统当前版本内的级别号
char machine[] 描述使用的硬件类型
下面举一个例子演示这几个函数的用法:
/* * main.c * * Created on: 2013年7月30日 * Author: DLUTBruceZhang */ #include<stdio.h> #include<unistd.h> #include<sys/utsname.h> #define MAXHOSTNAMELEN 64 int main(void) { struct utsname uts; char hostname[MAXHOSTNAMELEN]; size_t size = MAXHOSTNAMELEN; if(gethostname(hostname, size) != 0) { printf("error"); return -1; } printf("hostname:%s\n", hostname); if(uname(&uts) < 0) { printf("error"); return -1; } printf("System is %s on %s hardware\n",uts.sysname,uts.machine); printf("Nodename is %s\n",uts.nodename); printf("Release is %s, Version is %s\n",uts.release,uts.version); return 0; }
hostname:ubuntu System is Linux on i686 hardware Nodename is ubuntu Release is 3.0.0-12-generic, Version is #20-Ubuntu SMP Fri Oct 7 14:50:42 UTC 2011