linux C 获取主机名、CPU利用率、内存占用

1.获取主机名:

使用gethostname函数,函数形式如下:

#include

intgethostname(char *name, size_t len); 

intsethostname(const char *name, size_t len);

sethostname函数可以设置计算机的主机名。

编程实现:

linux C 获取主机名、CPU利用率、内存占用_第1张图片

2.proc文件系统介绍

Linux系统上的/proc目录是一种文件系统,即proc文件系统。与其它常见的文件系统不同的是,/proc是一种伪文件系统(也即虚拟文件系统),存储的是当前内核运行状态的一系列特殊文件,用户可以通过这些文件查看有关系统硬件及当前正在运行进程的信息,甚至可以通过更改其中某些文件来改变内核的运行状态。 


基于/proc文件系统如上所述的特殊性,其内的文件也常被称作虚拟文件,并具有一些独特的特点。例如,其中有些文件虽然使用查看命令查看时会返回大量信息,但文件本身的大小却会显示为0字节。此外,这些特殊文件中大多数文件的时间及日期属性通常为当前系统时间和日期,这跟它们随时会被刷新(存储于RAM中)有关。

 
为了查看及使用上的方便,这些文件通常会按照相关性进行分类存储于不同的目录甚至子目录中,如/proc/scsi目录中存储的就是当前系统上所有SCSI设备的相关信息,/proc/N中存储的则是系统当前正在运行的进程的相关信息,其中N为正在运行的进程(可以想象得到,在某进程结束后其相关目录则会消失)。 


大多数虚拟文件可以使用文件查看命令如cat、more或者less进行查看,有些文件信息表述的内容可以一目了然,但也有文件的信息却不怎么具有可读性。不过,这些可读性较差的文件在使用一些命令如apm、free、lspci或top查看时却可以有着不错的表现。

3. 获取CPU使用率

要想计算CPU使用率,首先要了解文件/proc/stat中的内容

linux C 获取主机名、CPU利用率、内存占用_第2张图片

CPU 以及CPU0、CPU1中每行的每个参数意思(以第一行为例)解释:
user (3769) 从系统启动开始累计到当前时刻,用户态的CPU时间(单位:jiffies) ,不包含 nice值为负进程。1jiffies=0.01秒
nice (372) 从系统启动开始累计到当前时刻,nice值为负的进程所占用的CPU时间(单位:jiffies)
system (7994) 从系统启动开始累计到当前时刻,核心时间(单位:jiffies)
idle (49273) 从系统启动开始累计到当前时刻,除硬盘IO等待时间以外其它等待时间(单位:jiffies)
iowait (9829) 从系统启动开始累计到当前时刻,硬盘IO等待时间(单位:jiffies) ,
irq (0) 从系统启动开始累计到当前时刻,硬中断时间(单位:jiffies)
softirq (162) 从系统启动开始累计到当前时刻,软中断时间(单位:jiffies)

代码实现:

linux C 获取主机名、CPU利用率、内存占用_第3张图片

linux C 获取主机名、CPU利用率、内存占用_第4张图片

4. 内存使用使用情况


4.1 .使用/proc/meminfo 

测量一个进程占用了多少内存,linux为我们提供了一个很方便的方法,/proc目录为我们提供了所有的信息,实际上top等工具也通过这里来获取相应的信息。
/proc/meminfo
可以获取机器的内存使用信息。

linux C 获取主机名、CPU利用率、内存占用_第5张图片

代码实现:

linux C 获取主机名、CPU利用率、内存占用_第6张图片

linux C 获取主机名、CPU利用率、内存占用_第7张图片


4.2 使用sysinfo函数

Linux,可以用sysinfo来获取系统相关信息。                 

Linux,sysinfo是用来获取系统相关信息的结构体。

函数声明和原型:

#include

int sysinfo(struct sysinfo *info);

结构体信息:

linux C 获取主机名、CPU利用率、内存占用_第8张图片

代码实现:

linux C 获取主机名、CPU利用率、内存占用_第9张图片

linux C 获取主机名、CPU利用率、内存占用_第10张图片

你可能感兴趣的:(linux C 获取主机名、CPU利用率、内存占用)