使用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" }