1.主机标识
每一台机器都有一个主机名,主机名由系统管理员指定,在网络中主机名可能是一个网络域名。
函数 gethostname() 和 sethostname() 可以用来获取和设置主机名。
函数原型如下所示:
#include<unstd.h>
int gethostname(char *name, size_t size);
int sethostname(const char *name, size_t length);2.硬件/软件类型识别
函数 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
本文介绍了如何在UNIX/Linux系统中获取主机名和操作系统信息。通过gethostname()和sethostname()函数可以获取与设置主机名,而uname()系统调用则能展示操作系统版本和硬件详情,包括sysname、nodename、release、version和machine等关键信息。

被折叠的 条评论
为什么被折叠?



