Возможно, вам потребуется проверить каждую систему и реализовать ее соответствующим образом. В 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"
}