- 论坛徽章:
- 13
|
本帖最后由 _nosay 于 2016-11-22 23:05 编辑
回复 5# amarant
我之前还有个疑问,不知道跟这个有不有关系?MAP_FIXED需要程序员指定映射地址,但进程的虚拟地址使用都是内核在背后操作,程序员又不知道哪些虚拟地址还是空闲的,所以一直想不明白MAP_FIXED有什么意义。
- #include <stdio.h>
- #include <sys/mman.h>
- #include <sys/types.h>
- #include <sys/stat.h>
- #include <fcntl.h>
- int main()
- {
- int fd = open("./test.c", O_RDONLY, 0644);
- void *p = mmap((void *)4096, 1024, 0, MAP_PRIVATE | MAP_FIXED, fd, 0);
- printf("fd: %d, p: %p\n", fd, p);
- return 0;
- }
复制代码
打印:
[root@localhost 15]# ./a.out
fd: 3, p: 0x1000
说明映射成功了,那么0~0x8048000这块虚拟空间是不是就是留给程序员自己去使用的呢?
|
|