1

我在我的实验室中使用 Fedora release 17 (Beefy Miracle),我试图用 mlock C 函数阻塞 100KB 的常驻内存,代码如下。

#include <sys/mman.h>


int main(){
char *p;
mlock(p, 100000);
sleep(100);
}

当我用 gcc 编译代码时,我看到了以下错误

gcc -o mymlock mymlock.c
strace -e mlock ./mlock 
mlock(0x4c668ff4, 100000)               = -1 ENOMEM (Cannot allocate memory)

如果在limits.conf 中有“fileuser - memlock unlimited”,为什么会出现这个错误?

我的内存使用情况

[fileuser@Rossetti ~]$ free -m
         total       used       free     shared    buffers     cached
Mem:          2900       2674        226          0         58        957
-/+ buffers/cache:       1657       1242
Swap:         4927        146       4781
4

1 回答 1

2

我的 C 代码是错误的,现在它可以工作了

新代码

#include <sys/mman.h>
#include <limits.h>


int main(){
char *p = malloc(4096*1024);
mlock(p, (4096*1024));
sleep(100);
}
于 2013-10-02T19:55:53.873 回答