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
UNIX/LINUX程序设计教程(1)-- 获取系统信息的更多相关文章
- 《Unix&Linux大学教程》学习笔记一:历史与常识
“为什么说Unix/Linux是自由的: 因为我们可以自己组装一个操作系统:Unix/Linux内核+其他实用工具+编程工具+GUI 因为我们可以自由地获取开源工作者 ...
- unix&linux大学教程 目录
第1章unix简介 第2章什么是linux?什么是unix 第3章unix连接 第4章开始使用unix 第5章gui:图形用户界面 第6章unix工作环境 第7章unix键盘使用 第8章能够立即使用的 ...
- 《Unix&Linux大学教程》学习笔记6——Unix文件系统
1:Unix文件类型——3种 普通文件(常规文件):文本文件(纯文本.脚本.源程序.配置文件.html等).二进制文件(多媒体文件.数据库等) 目录:用于组织文件 伪文件:不存储数据,目的是提供一种服 ...
- 《Unix&Linux大学教程》学习笔记5 :正则表达式
1:Unix下正则表达式规则
- 《Unix&Linux大学教程》学习笔记四:标准I/O 与 过滤器
1:标准IO Unix中的标准IO主要包括:标准输入.标准输出(正常输出).标准错误(异常信息) 2:重定向输出 内容 > 文件名 :将内容输出到文件,并且覆盖文件原来内容:文件不存在则新建 内 ...
- 《Unix&Linux大学教程》学习笔记二:指令常识
1:指令的本质——调用可执行程序 在Shell输入命令时,其实就是根据名称运行相应的程序. 2:在系统中查找程序 which 指令名 type 指令名 3:时间与日历 date [-选项] 参数 ca ...
- 《Unix&Linux大学教程》学习笔记七:进程与作业控制
1:进程:一个内存中的程序+程序所需数据+管理程序的各种状态信息. 2:进程由内核进行管理,内核使用调度器,给予进程一个时间片来运行,然后切换到下一个进程. 3:进程分叉 fork :创建一个子进程 ...
- 《Unix&Linux大学教程》学习笔记三:Shell常识
1:全局变量与局部变量 全局:可以从父进程传递给子进程的变量,如:环境变量. 局部:只能在特定的子Shell中使用的变量. 局部变量变全局:使用 “export 局部” 指令将创建的局部变量导出到环境 ...
- 嵌入式Linux开发教程:Linux常见命令(上篇)
摘要:这是对周立功编著的<嵌入式Linux开发教程>的第7期连载.本期刊载内容有关LinuxLinux常见命令中的导航命令.目录命令和文件命令.下一期将连载网络操作命令.安装卸载文件系统等 ...
随机推荐
- 利用Express模拟web安全之---xss的攻与防
一.什么是XSS? 跨站脚本攻击(Cross Site Scripting),为了不和层叠样式表(Cascading Style Sheets, CSS)的缩写混淆,故将跨站脚本攻击缩写为XSS.恶意 ...
- java1.8十大新特性详解
"Java is still not dead-and people are starting to figure that out." 本教程将用带注释的简单代码来描述新特性,你 ...
- 643. Maximum Average Subarray
Given an array consisting of \(n\) integers, find the contiguous subarray of given length \(k\) that ...
- Matlab 编译EXE
环境:vs2013 matlab2015b 一.生成独立可执行的程序(exe文件)步骤1.设置编译器.在matlab命令行输入mbuild –setup以及mex –setup,选择安装的c编译器. ...
- 网页底部广告悬浮弹窗(css)
有的单页面需要添加广告等悬浮div. 部分代码: <div class="flex"> 内容.... </div> 主要css代码: .flex{posit ...
- JavaScript Math(算数)对象
Math 对象 Math(算数)对象的作用是:执行普通的算数任务. Math 对象提供多种算数值类型和函数.无需在使用这个对象之前对它进行定义. 使用Math的属性/方法的语法: var x=Math ...
- 前端技术之_CSS详解第一天
前端技术之_CSS详解第一天 一html部分 略.... 二.列表 列表有3种 2.1 无序列表 无序列表,用来表示一个列表的语义,并且每个项目和每个项目之间,是不分先后的. ul就是英语unorde ...
- Windows下Java调用BAT批处理不弹出cmd窗口
常规Windows下Java调用BAT方式肯定会弹出cmd窗口 Runtime.getRuntime().exec("cmd.exe /C start D:\\test.bat") ...
- [BBS]搭建开源论坛之Jforum搭配开源CKEDITOR
本文作者:sushengmiyan 本文地址:http://blog.csdn.net/sushengmiyan/article/details/47946065 使用默认的编辑器的时候,格式都无法保 ...
- Git之(三)辅助命令
熟悉了Git的基本操作之后,再来研究一下Git为我们提供的基础设施服务.正如一个程序员,只会写代码是远远不够的,还得知道怎么吃饭,怎么睡觉,怎么谈恋爱,怎么耍流氓--会了这些才能写出更好的代码,这就是 ...