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 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)-- 获取系统信息相关推荐
- 《Unix Linux 大学教程》 - 附录F
学习笔记,内容基础,适合初学者. 阅读之前,请务必花30秒查看前言说明(在第一.二章前面部分) <Unix & Linux 大学教程> - 第一.二章 学习笔记 Unix简介 ...
- linux系统调用sysconf(获取系统信息)
1.前言 当前计算机都是多核的,linux2.6提供了进程绑定cpu功能,将进程指定到某个core上执行,方便管理进程.linux提供了sysconf系统调用可以获取系统的cpu个数和可用的cpu个数 ...
- Unix Linux大学教程(三):过滤器、正则表达式、vi
第16章 过滤器:简介和基本操作 删除数据列用colrm:colrm [startcol [endcol]] 如果没有endcol则删除从startcol至行末尾所有的列. 第17章 过滤器: ...
- linux程序设计教程期末考试,LINUX程序设计期末大作业
b) 很多公共服务场所都有取号机,用来给用户进行编号,如医院,银行等.试编写一个socket客户机/服务器程序,用来模拟取号机.实现的功能如下: (1).客户机连接服务器 (2).服务器收到客户机连接 ...
- linux shell教程(一)
本教程摘自 C语言教程网 Shell教程目录 1.Shell简介 2.几种常见的Shell 3.Shell与编译型语言的差异 4.什么时候使用Shell 5.第 ...
- 嵌入式Linux开发教程:Linux常见命令(上篇)
摘要:这是对周立功编著的<嵌入式Linux开发教程>的第7期连载.本期刊载内容有关LinuxLinux常见命令中的导航命令.目录命令和文件命令.下一期将连载网络操作命令.安装卸载文件系统等 ...
- Unix/Linux环境C编程新手教程(22) C/C++怎样获取程序的执行时间
1.问:知道程序执行时间我们能够做什么? 在<C++应用程序性能优化>一书中,假设大家读过相信大家一定对性能优化这一块很上心,文中总是对优化前后的时间对照很直观给我们一个感受. 那么我们怎 ...
- 《Unix/linux编程实践教程》------重定向程序的I/O
<Unix/linux编程实践教程>书中举例命令more的用法: $more filename $command | more $more < filename 用法1直接显示fil ...
- Linux下用来获取各种系统信息的C++类
#include <vector> #include "sys/config.h" SYS_NAMESPACE_BEGIN /*** * 用来获取系统.内核和进程的各类 ...
最新文章
- 对WEB前端的几段思考(一)——界面设计和性能优化(整理中)
- 【分享】20道Oracle运维常见面试题
- thymeleaf 获取yml中的值_SpringBoot引入Thymeleaf
- mysql主从同步从库上Slave_IO_Running: Connecting问题
- HTML5如何制作轮播透明效果,js前端开发实现banner轮播透明切换
- word 论文排版 —— 按指定格式章节的自动编号
- JimuReport积木报表,一个好用的开源免费的报表平台
- 勇敢一次_开放网络需要勇敢的新英雄吗?
- Geatpy自定义初始种群
- 解决C#程序只允许运行一个实例的几种方法详解
- 站闻资讯项目开发个人总结
- k8s学习: 创建 mysql 任务
- Vue学习笔记(组件篇)
- Chrome浏览器嗅探功能技巧
- PSPNet: Pyramid Scene Parsing Network论文解读
- php网页象棋源码,JS小游戏之象棋暗棋源码详解_javascript技巧
- 【验证码识别】OpenCV挑战极验滑动拼图验证码
- VUE 组件 有数据不渲染 v-for
- GB2312 简体中文编码表
- 序列化Serializable serialVersionUID的作用