感谢支持
我们一直在努力

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\n”);


   exit(1);


}


printf(“sysname[]=%s\n”,u_name.sysname);


printf(“nodename[]=%s\n”,u_name.nodename);


printf(“release[]=%s\n”,u_name.release);


printf(“version[]=%s\n”,u_name.version);


printf(“machin[]=%s\n”,u_name.machine);


printf(“domainname[]=%s\n”,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:\n”);


        exit(1);


}


printf(“host name:%s\n”,buf);


 


s = getdomainname(buf,sizeof(buf));


if(s <0){


        printf(“getdomainname()failed\n”);


        exit(1);


}


printf(“the domain name=%s\n”,buf);


return 0;


}

赞(0) 打赏
转载请注明出处:服务器评测 » Linux系统中如何通过程序来获知系统信息
分享到: 更多 (0)

听说打赏我的人,都进福布斯排行榜啦!

支付宝扫一扫打赏

微信扫一扫打赏