将-1作为文件描述符传递给mmap

时间:2014-06-10 08:28:01

标签: linux posix

我在" ls" FC17 Linux中的命令。

以下是输出。

execve("/usr/bin/ls", ["ls"], [/* 48 vars */]) = 0
brk(0)                                  = 0x27c1000
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fc765fa6000
...

我没有得到将-1作为文件描述符传递给mmap调用的目的和结果,有人可以对此有所了解吗?

2 个答案:

答案 0 :(得分:5)

有两种映射(映射到进程的虚拟内存区域):文件支持的映射和匿名(非文件支持的)映射。有两种方法可以请求匿名映射:

  • (BSD)将MAP_ANONYMOUS(原MAP_ANON)传递给mmap()。没有关联文件,因此您应该将-1作为file参数传递。一些操作系统忽略file参数,其他操作系统要求它为-1(BSD IIRC)。
  • (系统V)地图/dev/zero。在这种情况下,file显然是有意义的。

答案 1 :(得分:2)

请参阅mmap(2)。这与MAP_ANONYMOUS标志一起分配共享内存。它是SysV风格的共享内存(shmctl)的替代品。