最近在做一个项目,遇到要在程序中动态的获取设备硬件信息。纠结了我很长时间,今天突然发现原来在linux中有API函数直接就可以实现。对于好东西,当然要和大家share下了。
一.uname()函数1.使用uname函数来实现获取系统信息1>函数原型#include <sys/utsname.h>int uname(struct utsname *buf);2>函数功能:该函数会告诉我们系统的相关信息。3>函数返回值函数返回信息存放在struct utsname结构体buf中,当函数成功时会返回0,当发生错误时会返回-1。4>struct utsname的定义如下:#include<sys/utsname.h>struct utsname{ char sysname[SYS_NMLN]; char nodename[SYS_NMLN]; char release[SYS_NMLN]; char version[SYS_NMLN]; char machine[SYS_NMLN]; char __domainname[SYA_NMLN];};结构体成员描述如下:? sysname:表示正在使用的操作系统。对于Linux而言,这个值为“Linux”。? nodename: 表示设备的主机名? release: 操作系统发布号? version: 操作系统版本号? machine 代表主机的硬件类型,例如“i686”代表一个奔腾CPU.? domainname 返回主机的域名2.程序实例:#include<unistd.h>#include<string.h>#include<errno.h>#include<sys/utsname.h> int main(int argc,char **argv){ int s; struct utsname u_name;s = uname(&u_name);if (s < 0){ printf(“uname()failed
”); exit(1);}printf(“sysname[]=%s
”,u_name.sysname);printf(“nodename[]=%s
”,u_name.nodename);printf(“release[]=%s
”,u_name.release);printf(“version[]=%s
”,u_name.version);printf(“machin[]=%s
”,u_name.machine);printf(“domainname[]=%s
”,u_name.__domainname);}
二.gethostname和getdomainname函数通过这两个函数可以实现获得设备的主机名和域名1.gethostname()函数1>函数功能:可以用来确定当前的主机名。2>函数原型:#include<unistd.h>int gethostname(char *name,size_t len);3>函数形参? name:接收缓冲区。? len:接收缓冲区的最大长度4>函数返回值如果函数执行成功,则返回零;如果发生错误则返回-1。错误号存放在外部变量errno中。2.getdomainname()函数1>函数功能可以允许主机获得程序正在运行的主机的NIS域名。2>函数原型#include<unistd.h>int getdomainname(char *name,size_t len);3>函数形参? name:接收缓冲区。? len:接收缓冲区的最大长度4>函数返回值如果函数执行成功,则返回零;如果发生错误则返回-1。错误号存放在外部变量errno中。3.函数实例#include<stdio.h>#include<stdlib.h>#include<unistd.h>#include<string.h>#include<errno.h>int main(int argc,char **argv){ int s; char buf[32]; s = gethostname(buf,sizeof(buf)); if( s < 0){ printf(“gethostname:failed:
”); exit(1);}printf(“host name:%s
”,buf); s = getdomainname(buf,sizeof(buf));if(s <0){ printf(“getdomainname()failed
”); exit(1);}printf(“the domain name=%s
”,buf);return 0;}5 种GNOME 终端色彩方案VMware虚拟机RedHat 4增加根目录的磁盘空间相关资讯 Linux知识
- 时光总是太匆匆!Linux已经诞生23 (08/29/2014 14:12:03)
- Linux虚拟文件系统之文件打开(sys (02/14/2012 11:41:54)
- 2012 年 Linux 峰会时间表 (02/14/2012 06:47:27)
| - 报告称当前 Linux 人才抢手 高薪也 (02/15/2012 06:35:56)
- 解析企业为何选择Linux及其特别之 (02/14/2012 08:17:59)
- Linux禁用字符闪烁的方法 (11/02/2011 10:28:25)
|
本文评论 查看全部评论 (0)