2013-10-02 7 views
1

내 실험실에서 Fedora 릴리스 17 (Beefy Miracle)을 사용하고 있습니다. mlock C로 100KB의 상주 메모리를 차단하려고합니다. 함수의 코드는 다음과 같습니다. 의 limits.conf에서 - "무제한 memlock을 fileuser를"내가 만약 내가 GCC로 컴파일 된 코드를 /etc/security/limits.conf에 "fileuser - memlock t unlimited"로 100KB를 할당 할 수 없습니다.

#include <sys/mman.h> 


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

은 내가

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

왜 내가이 오류가 않는 다음과 같은 오류를 보았다?

내 메모리 사용

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

답변

2

내 C 코드는 지금 작동, 잘못

새로운 코드

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


int main(){ 
char *p = malloc(4096*1024); 
mlock(p, (4096*1024)); 
sleep(100); 
}