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 64int 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 大学教程》 - 附录F

    学习笔记,内容基础,适合初学者. 阅读之前,请务必花30秒查看前言说明(在第一.二章前面部分) <Unix & Linux 大学教程> - 第一.二章 学习笔记   Unix简介 ...

  2. linux系统调用sysconf(获取系统信息)

    1.前言 当前计算机都是多核的,linux2.6提供了进程绑定cpu功能,将进程指定到某个core上执行,方便管理进程.linux提供了sysconf系统调用可以获取系统的cpu个数和可用的cpu个数 ...

  3. Unix Linux大学教程(三):过滤器、正则表达式、vi

    第16章  过滤器:简介和基本操作 删除数据列用colrm:colrm  [startcol [endcol]]  如果没有endcol则删除从startcol至行末尾所有的列. 第17章  过滤器: ...

  4. linux程序设计教程期末考试,LINUX程序设计期末大作业

    b) 很多公共服务场所都有取号机,用来给用户进行编号,如医院,银行等.试编写一个socket客户机/服务器程序,用来模拟取号机.实现的功能如下: (1).客户机连接服务器 (2).服务器收到客户机连接 ...

  5. linux shell教程(一)

    本教程摘自 C语言教程网 Shell教程目录     1.Shell简介     2.几种常见的Shell     3.Shell与编译型语言的差异     4.什么时候使用Shell     5.第 ...

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

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

  7. Unix/Linux环境C编程新手教程(22) C/C++怎样获取程序的执行时间

    1.问:知道程序执行时间我们能够做什么? 在<C++应用程序性能优化>一书中,假设大家读过相信大家一定对性能优化这一块很上心,文中总是对优化前后的时间对照很直观给我们一个感受. 那么我们怎 ...

  8. 《Unix/linux编程实践教程》------重定向程序的I/O

    <Unix/linux编程实践教程>书中举例命令more的用法: $more filename $command | more $more < filename 用法1直接显示fil ...

  9. Linux下用来获取各种系统信息的C++类

    #include <vector> #include "sys/config.h" SYS_NAMESPACE_BEGIN /*** * 用来获取系统.内核和进程的各类 ...

最新文章

  1. 对WEB前端的几段思考(一)——界面设计和性能优化(整理中)
  2. 【分享】20道Oracle运维常见面试题
  3. thymeleaf 获取yml中的值_SpringBoot引入Thymeleaf
  4. mysql主从同步从库上Slave_IO_Running: Connecting问题
  5. HTML5如何制作轮播透明效果,js前端开发实现banner轮播透明切换
  6. word 论文排版 —— 按指定格式章节的自动编号
  7. JimuReport积木报表,一个好用的开源免费的报表平台
  8. 勇敢一次_开放网络需要勇敢的新英雄吗?
  9. Geatpy自定义初始种群
  10. 解决C#程序只允许运行一个实例的几种方法详解
  11. 站闻资讯项目开发个人总结
  12. k8s学习: 创建 mysql 任务
  13. Vue学习笔记(组件篇)
  14. Chrome浏览器嗅探功能技巧
  15. PSPNet: Pyramid Scene Parsing Network论文解读
  16. php网页象棋源码,JS小游戏之象棋暗棋源码详解_javascript技巧
  17. 【验证码识别】OpenCV挑战极验滑动拼图验证码
  18. VUE 组件 有数据不渲染 v-for
  19. GB2312 简体中文编码表
  20. 序列化Serializable serialVersionUID的作用

热门文章

  1. LaTeX技巧:如何高效地将LaTeX代码转为Word公式
  2. vim文本编辑器详解
  3. .Net 项目代码风格规范
  4. oracle numtodsinterval and numtoyminterval 使用法则
  5. android多线程断点续传
  6. 阿里云网站80端口无法访问
  7. 如何在Atomic主机上远程使用 Docker
  8. 初心大陆-----python宝典之以外学习对比去重
  9. 20150920 DNS服务
  10. 机房几台终端电脑,本地连接中不停的出现连接和断开,网络不通,解决方法...