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;

你可能感兴趣的:(linux:获取系统内存使用情况)