我在我的实验室中使用Fedora版本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
答案 0 :(得分:2)
我的C代码错了,现在可以了
新代码
#include <sys/mman.h>
#include <limits.h>
int main(){
char *p = malloc(4096*1024);
mlock(p, (4096*1024));
sleep(100);
}