Welcome 微信登录

首页 / 操作系统 / Linux / Linux系统中如何通过程序来获知系统信息

最近在做一个项目,遇到要在程序中动态的获取设备硬件信息。纠结了我很长时间,今天突然发现原来在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)
表情: 姓名: 字数