我在我的实验室中使用 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