马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
×
在应用步伐当中,偶然每每须要去获取到一些体系干系的信息,譬如时间、日期、以及别的一些体系干系信息,本章将向各人先容怎样通过 Linux 体系调用或 C 库函数获取体系信息,譬如获取体系时间、日期以及设置体系时间、日期等;除此之外,还会向各人先容 Linux 体系下的/proc 假造文件体系,包罗/proc 文件体系是什么以及怎样从/proc 文件体系中读取体系、历程有关信息。
除了先容体系信息内容外,本章还会向各人先容有关体系资源的使用,譬如体系内存资源的申请与使用等。好了,废话不多少,开始本章内容的学习吧!
用于获取体系干系信息的函数;
使步伐进入休眠;
在堆中申请内存;
proc 文件体系先容;
1、体系信息
1.1 体系标识 uname
体系调用 uname()用于获取有关当前操纵体系内核的名称和信息,函数原型如下所示(可通过"man 2 uname"下令检察):
- #include <sys/utsname.h>
- int uname(struct utsname *buf);
复制代码 使用该函数须要包罗头文件<sys/utsname.h>。
函数参数和返回值寄义如下:
buf:struct utsname 布局体范例指针,指向一个 struct utsname 布局体范例对象。
返回值:乐成返回 0;失败将返回-1,并设置 errno。
uname()函数用法非常简单,先界说一个 struct utsname 布局体变量,调用 uname()函数时传入变量的地点即可,struct utsname 布局体如下所示:
- struct utsname {
- char sysname[]; /* 当前操作系统的名称 */
- char nodename[]; /* 网络上的名称(主机名) */
- char release[]; /* 操作系统内核版本 */
- char version[]; /* 操作系统发行版本 */
- char machine[]; /* 硬件架构类型 */
- #ifdef _GNU_SOURCE
- char domainname[];/* 当前域名 */
- #endif
- };
复制代码 可以看到,struct utsname 布局体中的全部成员变量都是字符数组,以是获取到的信息都是字符串。
1.2 sysinfo 函数
sysinfo 体系调用可用于获取一些体系统计信息,其函数原型如下所示:
- #include <sys/sysinfo.h>
- int sysinfo(struct sysinfo *info);
复制代码 函数参数和返回值寄义如下:
info:struct sysinfo 布局体范例指针,指向一个 struct sysinfo 布局体范例对象。
返回值:乐成返回 0;失败将返回-1,并设置 errno。
- struct sysinfo {
- long uptime; /* 自系统启动之后所经过的时间(以秒为单位) */
- unsigned long loads[3]; /* 1, 5, and 15 minute load averages */
- unsigned long totalram; /* 总的可用内存大小 */
- unsigned long freeram; /* 还未被使用的内存大小 */
- unsigned long sharedram; /* Amount of shared memory */
- unsigned long bufferram; /* Memory used by buffers */
- unsigned long totalswap; /* Total swap space size */
- unsigned long freeswap; /* swap space still available */
- unsigned short procs; /* 系统当前进程数量 */
- unsigned long totalhigh; /* Total high memory size */
- unsigned long freehigh; /* Available high memory size */
- unsigned int mem_unit; /* 内存单元大小(以字节为单位) */
- char _f[20-2*sizeof(long)-sizeof(int)]; /* Padding to 64 bytes */
- };
复制代码 1.3 gethostname 函数
此函数可用于单独获取 Linux 体系主机名,与 struct utsname 数据布局体中的 nodename 变量一样,gethostname 函数原型如下所示(可通过"man 2 gethostname"下令检察):
- #include <unistd.h>
- int gethostname(char *name, size_t len);
复制代码 函数参数和返回值寄义如下:
name:指向用于存放主机名字符串的缓冲区。
len:缓冲区长度。
返回值:乐成返回 0,;失败将返回-1,并会设置 errno。
1.4 sysconf()函数
sysconf()函数是一个库函数,可在运行时获取体系的一些设置信息,譬如页巨细(page size)、主机名的最大长度、历程可以打开的最大文件数
|