gpt4 book ai didi

c - 进程中锁定了多少内存

转载 作者:IT王子 更新时间:2023-10-29 00:07:41 24 4
gpt4 key购买 nike

使用 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 - 进程中锁定了多少内存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5762386/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com