我的完整 C MATE 小程序可以在 github 上找到:https ://github.com/geniass/mate-resource-applet/tree/cmake (BRANCH CMAKE)。现在是一团糟,所以请看下面的代码。
我找不到一个小程序来显示我电脑的空闲内存,所以基本上就是这样。我正在使用 sysinfo 获取此信息,它适用于我系统的总内存(大约 4GB,显示 3954 MB)。htop 显示 3954 MB 中使用了 3157 MB。
但是,sysinfo 为免费内存(136 MB)提供的值显然是错误的(如果免费内存是尚未分配的内存或其他东西,我不知道)。
这个问题是同一个问题,但是涉及 mem_unit 的解决方案不起作用,因为 mem_unit = 1 在我的系统上。
这是一个给出相同值的最小程序:
#include <stdio.h>
#include <sys/sysinfo.h>
int main() {
/* Conversion constants. */
const long minute = 60;
const long hour = minute * 60;
const long day = hour * 24;
const double megabyte = 1024 * 1024;
/* Obtain system statistics. */
struct sysinfo si;
sysinfo (&si);
/* Summarize interesting values. */
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 ("mem_unit: : %u\n", si.mem_unit);
printf ("process count : %d\n", si.procs);
return 0;
}
输出:
system uptime : 0 days, 10:25:18
total RAM : 3953.9 MB
free RAM : 162.1 MB
mem_unit: : 1
process count : 531
这里发生了什么?freeram不是我想的那样吗?