一个进程中锁定了多少内存

前端之家收集整理的这篇文章主要介绍了一个进程中锁定了多少内存前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
使用getrlimit(RLIMIT_MEMLOCK),可以获得进程可以分配的允许的锁定内存量(mlock()或mlockall()).

但是如何检索当前锁定的内存量?

例如,没有getrusage()返回的信息.

Linux下,可以读取/ proc / self / status并从VmLck开始的行中提取锁定的内存量.

是否有便携式方式来检索可在Linux,* BSD和其他POSIX兼容系统上工作的锁定内存量?

解决方法

您可能需要检查每个系统并相应地执行它.在Linux上:

cat / proc / $PID / status | grep VmLck

您可能需要在C(读/ proc逐行搜索VmLck)中执行相同操作,因为此信息是在函数task_mem(array.c)中创建的,我不认为您可以直接访问.就像是:

#include <unistd.h>
#include <stdlib.h>
#include <stdio.h>

char cwd[PATH_MAX];
sprintf(cwd,"/proc/%d/status",getpid());

FILE* fp = fopen(cwd,"r");
if(!fp) {
    exit(EXIT_FAILURE);
}

while((read = getline(&line,&len,fp)) != -1) {
    // search for line starting by "VmLck"
}

猜你在找的C&C++相关文章