- 论坛徽章:
- 0
|
请问在linux上是个人都能用mlock给内存加锁么??我怎么看N本书上都是说只有root可以使用mlock(),而普通用户不能呢!?
但是我试验了一下,好像人人能使用mlock()。
以下是我试验过程,大家看看有什么不对?
[song@localhost ~]$ cat test.c
#include <stdio.h>
#include <stdlib.h>
#include <sys/mman.h>
main()
{
void * addr;
if ((addr = mmap(0, getpagesize(),PROT_READ, MAP_PRIVATE|MAP_ANONYMOUS,1, 0))==-1){
perror("mmap()");
exit(1);
}
if( mlock(addr, getpagesize() ) == -1 ) {
perror("mlock()");
exit(2);
}
printf("hello!\n");
}
[song@localhost ~]$ gcc -o test test.c
[song@localhost ~]$ ./test
hello!
[song@localhost ~]$ su root
[root@localhost song]# ./test
hello!
好像无论是root还是普通用户song都可以使用mlock()
ps:关于内存加锁的权限问题,感觉有些奇怪!
理论上来说,应该只有root有这个权限,而普通用户没有!
我目前知道的给内存加锁的方法有mlock(),mmap(MAP_LOCKED),shmctl(SHM_LOCK),
经过我的试验,只有shmctl(SHM_LOCK)是普通用户不能使用的,而mlock(),mmap(MAP_LOCKED)普通用户都可以使用!
小弟我也是个初学者,哪位老大可以帮我解惑??谢谢! |
|