Linux下C编程获取可用内存大小,请指点!

inventryan 2009-04-13 10:41:51
LINUX下的C编程获取可用内存大小,那位大虾可以把能实现这个结果的完整代码给发一下。有注释说明更好,十分感激!
...全文
915 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
xempo 2009-04-20
  • 打赏
  • 举报
回复
这次我真汗。
汗!
后自勉。
morris88 2009-04-13
  • 打赏
  • 举报
回复
哎,貌似晚了。不过,我也没有把 LZ 的问题看的很明白,好像有歧义...
子晞 2009-04-13
  • 打赏
  • 举报
回复

include <stdio.h>
#include <sys/sysinfo.h>

int main()
{
struct sysinfo si;
sysinfo(&si);
printf("Totalram: %ld\n", si.totalram);
printf("Available: %ld\n", si.freeram);
return 0;
}
syxian 2009-04-13
  • 打赏
  • 举报
回复
3楼的比较详细了!
独孤过儿 2009-04-13
  • 打赏
  • 举报
回复

#include <stdio.h>
#include <sys/sysinfo.h>

int main()
{
struct sysinfo si;
sysinfo(&si);
printf("Totalram: %d\n", si.totalram);
printf("Available: %d\n", si.freeram);
return 0;
}


sysinfo结构是这样定义的:

struct sysinfo {
long uptime; /* Seconds since boot */
unsigned long loads[3]; /* 1, 5, and 15 minute load averages */
unsigned long totalram; /* Total usable main memory size */
unsigned long freeram; /* Available memory size */
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; /* Number of current processes */
unsigned long totalhigh; /* Total high memory size */
unsigned long freehigh; /* Available high memory size */
unsigned int mem_unit; /* Memory unit size in bytes */
char _f[20-2*sizeof(long)-sizeof(int)]; /* Padding for libc5 */
};

  • 打赏
  • 举报
回复
struct sysinfo info;
sysinfo(&info);
xempo 2009-04-13
  • 打赏
  • 举报
回复
FILE *fp=fopen("/usr/proc/meminfo","r");
......
大概这样,反正在proc中有一个meminfo文件,里面实时记录系统内存各种详情。
inventryan 2009-04-13
  • 打赏
  • 举报
回复
谢谢3楼和其他各位的帮助。
分马上送到。

6楼的朋友,我的问题有什么歧义,说出来我学习一下。

23,110

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
  • 应用程序开发区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧