UNIX/LINUX程序设计教程(1)-- 获取系统信息

      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


你可能感兴趣的:(数据结构,printf,网络,操作系统,硬件)