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程序设计教程(1)-- 获取系统信息的更多相关文章

  1. 《Unix&Linux大学教程》学习笔记一:历史与常识

     “为什么说Unix/Linux是自由的:         因为我们可以自己组装一个操作系统:Unix/Linux内核+其他实用工具+编程工具+GUI         因为我们可以自由地获取开源工作者 ...

  2. unix&linux大学教程 目录

    第1章unix简介 第2章什么是linux?什么是unix 第3章unix连接 第4章开始使用unix 第5章gui:图形用户界面 第6章unix工作环境 第7章unix键盘使用 第8章能够立即使用的 ...

  3. 《Unix&Linux大学教程》学习笔记6——Unix文件系统

    1:Unix文件类型——3种 普通文件(常规文件):文本文件(纯文本.脚本.源程序.配置文件.html等).二进制文件(多媒体文件.数据库等) 目录:用于组织文件 伪文件:不存储数据,目的是提供一种服 ...

  4. 《Unix&Linux大学教程》学习笔记5 :正则表达式

    1:Unix下正则表达式规则

  5. 《Unix&Linux大学教程》学习笔记四:标准I/O 与 过滤器

    1:标准IO Unix中的标准IO主要包括:标准输入.标准输出(正常输出).标准错误(异常信息) 2:重定向输出 内容 > 文件名 :将内容输出到文件,并且覆盖文件原来内容:文件不存在则新建 内 ...

  6. 《Unix&Linux大学教程》学习笔记二:指令常识

    1:指令的本质——调用可执行程序 在Shell输入命令时,其实就是根据名称运行相应的程序. 2:在系统中查找程序 which 指令名 type 指令名 3:时间与日历 date [-选项] 参数 ca ...

  7. 《Unix&Linux大学教程》学习笔记七:进程与作业控制

    1:进程:一个内存中的程序+程序所需数据+管理程序的各种状态信息. 2:进程由内核进行管理,内核使用调度器,给予进程一个时间片来运行,然后切换到下一个进程. 3:进程分叉 fork :创建一个子进程 ...

  8. 《Unix&Linux大学教程》学习笔记三:Shell常识

    1:全局变量与局部变量 全局:可以从父进程传递给子进程的变量,如:环境变量. 局部:只能在特定的子Shell中使用的变量. 局部变量变全局:使用 “export 局部” 指令将创建的局部变量导出到环境 ...

  9. 嵌入式Linux开发教程:Linux常见命令(上篇)

    摘要:这是对周立功编著的<嵌入式Linux开发教程>的第7期连载.本期刊载内容有关LinuxLinux常见命令中的导航命令.目录命令和文件命令.下一期将连载网络操作命令.安装卸载文件系统等 ...

随机推荐

  1. Excel实现双击插入当前日期时间

    用vba做一个事件驱动程序. 第一步:点击开发工具-visual basic. 第二步:在当前工作表中编制程序如下: Private Sub Worksheet_BeforeDoubleClick(B ...

  2. Python的IO编程

    原文传送门:请点击 原文传送门:请点击

  3. Delphi7.0常用函数-属性-事件

    abort 函数 引起放弃的意外处理 addexitproc 函数 将一过程添加到运行时库的结束过程表中 addr 函数 返回指定对象的地址 adjustlinebreaks 函数 将给定字符串的行分 ...

  4. C语言程序设计预报作业

    1. 阅读邹欣老师的博客--师生关系,针对文中的几种师生关系谈谈你的看法,你期望的师生关系是什么样的? 答:万物都是变化的,师生关系也一样.小学中学把老师看作春蚕,蜡烛的的比喻到了大学显然行不通了.大 ...

  5. EF 6.x、EF Core实现dynamic动态查询和EF Core实现多个上下文实例池你了解多少?

    前言 很长一段时间没有写博客了,今天补上一篇吧,偶尔发现不太愿意写博客了,太耗费时间,不过还是在坚持当中,毕竟或许写出来的东西能帮到一些童鞋吧,接下来我们直奔主题.无论是在在EF 6.x还是EF Co ...

  6. STM8操作LCD5110总结

    附上一小段代码: void LCD_init(void) { // 产生一个让LCD复位的低电平脉冲 //LCD_RST = 0; GPIO_WriteLow(LCD_PORTG, LCD_RST); ...

  7. BigData-‘基于代价优化’究竟是怎么一回事?

    本文由  网易云发布. 本文具体讨论了Join基础算法的一种优化方案  – Runtime Filter,在本文最后还引申地聊了聊谓词 下推技术.同时,在本文文章开头,笔者引出了两个问题,SQL执行引 ...

  8. truncated、delete和drop的异同点

    相同点 truncate和不带where子句的delete, 以及drop都会删除表内的数据. 不同点: 1.truncate和 delete只删除数据不删除表的结构(定义) drop语句将删除表的结 ...

  9. Go 语言结构

    Go Hello World 实例 Go 语言的基础组成有以下几个部分: 包声明 引入包 函数 变量 语句 & 表达式 注释 接下来让我们来看下简单的代码,该代码输出了"Hello ...

  10. PHP While 循环

    PHP 循环 - While 循环 循环执行代码块指定的次数,或者当指定的条件为真时循环执行代码块. PHP 循环 在您编写代码时,您经常需要让相同的代码块一次又一次地重复运行.我们可以在代码中使用循 ...