linux:获取系统内存使用情况

http://nadeausoftware.com/articles/2012/09/c_c_tip_how_get_physical_memory_size_system#sysinfonbsp

sysinfo( )

On Linux, the sysinfo( ) function fills a sysinfo struct with system statistics. The struct has the following fields:

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 */
};

Prior to Linux 2.3.23 (late 2003), the sysinfo struct omitted the last four fields and all sizes were in bytes. Today, the larger struct is used and all sizes are in units given by the mem_unit field. The totalram field times the mem_unit field gives the size of physical memory in bytes.

The memory size computed from the sysinfo struct is the same as that computed from sysconf( ) and the page size (see above). Since the method is redundant, this article's getMemorySize( ) function uses sysconf( ) instead of sysinfo( ).

Availability: Linux.

Get memory size:

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

struct sysinfo info;
sysinfo( &info );
return (size_t)info.totalram * (size_t)info.mem_unit;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值