linux系统中如何通过程序来获知系统信息
来源:互联网 发布:淘宝信用值 评论 编辑:程序博客网 时间:2024/05/16 17:11
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;
}
- linux系统中如何通过程序来获知系统信息
- linux系统中如何通过程序来获知系统信息
- linux系统中如何通过程序来获知系统信息
- 如何在 Linux 系统中通过用户组来管理用户
- 如何在 Linux 系统中通过用户组来管理用户
- 如何通过数字来判断linux系统分区的类型
- 如何通过终端命令查看 linux 的系统信息
- 如何通过终端查看 linux 的系统信息
- Linux 系统中通过用户组来管理用户
- 如何获知当前系统是否支持CPUID指令
- linux如何查看系统信息
- linux如何查看系统信息
- linux如何查看系统信息
- linux如何查看系统信息
- linux如何查看系统信息
- linux如何查看系统信息
- linux如何查看系统信息
- linux如何查看系统信息
- 数据库迁移,postgresql到oracle9i
- 资源
- C++静态数据成员
- dynamic设计动态类 (C# 4.0)
- 我国网络广告的现状及未来发展趋势分析
- linux系统中如何通过程序来获知系统信息
- 内核启动logo
- 位结构
- HTML标记大全
- 对常见几种tree的表的设计
- HTML个人总结
- 半夜感到腿疼
- windows函数入口问题 UNREFERENCED_PARAMETER的用处 _tWinMain与wWinMain又有什么区别
- 拖文件夹或者文件到可执行程序上,获得文件完整路径的方式