sysinfo: 获得系统统计信息
sysinfo 系统调用会填充一个有关系统统计信息的结构。它唯一的参数是一个指向 struct sysinfo 对象的指针。下列是 struct sysinfo 中一些比较有趣的域:
-
uptime
- 从系统启动开始已流逝的时间,以秒为单位。 totalram
- 可用的物理内存总空间。 freeram
- 空闲的物理内存空间。 procs
- 系统进程的数量。
查看man 2 sysinfo可以得到关于 struct sysinfo 的完整描述。当您使用 sysinfo 时请引入<linux/kernel.h>、<linux/sys.h> 和 <sys/sysinfo.h> 头文件。
代码 8.12 的程序打印了当前系统的一些统计信息。
代码 8.12 (sysinfo.c) 打印系统统计
#include <Linux/kernel.h> #include <Linux/sys.h> #include <stdio.h> #include <sys/sysinfo.h> int main () { /* 用于进制转换的常量。*/ const long minute = 60; const long hour = minute * 60; const long day = hour * 24; const double megabyte = 1024 * 1024; /* 获得系统统计。 */ struct sysinfo si; sysinfo (&si); /* 输出关注信息的概要。 */ printf (“system uptime : %ld days, %ld:%02ld:%02ld\n”, si.uptime / day, (si.uptime % day) / hour, (si.uptime % hour) / minute, si.uptime % minute); printf (“total RAM : %5.1f MB\n”, si.totalram / megabyte); printf (“free RAM : %5.1f MB\n”, si.freeram / megabyte); printf (“process count : %d\n”, si.procs); return 0; }