当前位置: 技术问答>linux和unix
要得到进程的虚拟内存使用率,请问linux系统下有哪几个函数可用?
来源: 互联网 发布时间:2016-07-23
本文导语: 先谢了! | struct sysinfo minfo; //这个函数sysinfo就是linux获取系统信息 if ( sysinfo( &minfo ) == -1 ) { return 0; } return ( 100 - 100 * ( float ) ...
先谢了!
|
struct sysinfo minfo;
//这个函数sysinfo就是linux获取系统信息
if ( sysinfo( &minfo ) == -1 )
{
return 0;
}
return ( 100 - 100 * ( float ) minfo.freeram / minfo.totalram + 0.5 );
//上面这句话是获取内存剩余大小的计算。
一下是struct sysinfo结构体的一些参数,你可以使用如下
结构体信息:
在Linux 2.3.16中,结构体的信息是(单位是字节):
struct sysinfo {
long
uptime;
/* 启动到现在经过的时间 */
unsigned long loads[3]; /* 1, 5, and 15 minute load averages
*/
unsigned long totalram; /* 总的可用的内存大小 */
unsigned long freeram; /* 还未被使用的内存大小 */
unsigned long sharedram; /* 共享的存储器的大小 */
unsigned long bufferram; /* 缓冲区大小 */
unsigned long totalswap; /* 交换区大小 */
unsigned long freeswap; /* 还可用的交换区大小 */
unsigned short procs; /* 当前进程数目 */
char
_f[22];
/* 64字节的补丁结构 */
};
在Linux 2.3.23(i386), 2.3.48 (all architectures)中,结构体的信息是(单位是mem_unit字节):
struct sysinfo {
long
uptime;
/* 启动到现在经过的时间 */
unsigned long loads[3]; /* 1, 5, and 15 minute load averages
unsigned long totalram; /* 总的可用的内存大小 */
unsigned long freeram; /* 还未被使用的内存大小 */
unsigned long sharedram; /* 共享的存储器的大小*/
unsigned long bufferram; /* 共享的存储器的大小 */
unsigned long totalswap; /* 交换区大小 */
unsigned long freeswap; /* 还可用的交换区大小 */
unsigned short procs; /* 当前进程数目 */
unsigned long totalhigh; /* 总的高内存大小 */
unsigned long freehigh; /* 可用的高内存大小 */
unsigned int mem_unit; /* 以字节为单位的内存大小 */
char _f[20-2*sizeof(long)-sizeof(int)]; /* libc5的补丁
};
返回值:
操作成功返回0,错误返回-1;
//这个函数sysinfo就是linux获取系统信息
if ( sysinfo( &minfo ) == -1 )
{
return 0;
}
return ( 100 - 100 * ( float ) minfo.freeram / minfo.totalram + 0.5 );
//上面这句话是获取内存剩余大小的计算。
一下是struct sysinfo结构体的一些参数,你可以使用如下
结构体信息:
在Linux 2.3.16中,结构体的信息是(单位是字节):
struct sysinfo {
long
uptime;
/* 启动到现在经过的时间 */
unsigned long loads[3]; /* 1, 5, and 15 minute load averages
*/
unsigned long totalram; /* 总的可用的内存大小 */
unsigned long freeram; /* 还未被使用的内存大小 */
unsigned long sharedram; /* 共享的存储器的大小 */
unsigned long bufferram; /* 缓冲区大小 */
unsigned long totalswap; /* 交换区大小 */
unsigned long freeswap; /* 还可用的交换区大小 */
unsigned short procs; /* 当前进程数目 */
char
_f[22];
/* 64字节的补丁结构 */
};
在Linux 2.3.23(i386), 2.3.48 (all architectures)中,结构体的信息是(单位是mem_unit字节):
struct sysinfo {
long
uptime;
/* 启动到现在经过的时间 */
unsigned long loads[3]; /* 1, 5, and 15 minute load averages
unsigned long totalram; /* 总的可用的内存大小 */
unsigned long freeram; /* 还未被使用的内存大小 */
unsigned long sharedram; /* 共享的存储器的大小*/
unsigned long bufferram; /* 共享的存储器的大小 */
unsigned long totalswap; /* 交换区大小 */
unsigned long freeswap; /* 还可用的交换区大小 */
unsigned short procs; /* 当前进程数目 */
unsigned long totalhigh; /* 总的高内存大小 */
unsigned long freehigh; /* 可用的高内存大小 */
unsigned int mem_unit; /* 以字节为单位的内存大小 */
char _f[20-2*sizeof(long)-sizeof(int)]; /* libc5的补丁
};
返回值:
操作成功返回0,错误返回-1;