mmap and shared memory

Jeff Schwab jeff at schwabcenter.com
Wed Feb 13 00:14:15 EST 2008


greg wrote:
> Carl Banks wrote:
>> In C you can use the mmap call to request a specific physical location
>> in memory (whence I presume two different processes can mmap anonymous
>> memory block in the same location)
> 
> Um, no, it lets you specify the *virtual* address in the process's
> address space at which the object you specify is to be mapped.
> 
> As far as I know, the only way two unrelated processes can share
> memory via mmap is by mapping a file. An anonymous block is known
> only to the process that creates it -- being anonymous, there's
> no way for another process to refer to it.

On POSIX systems, you can create a shared memory object without a file 
using shm_open.  The function returns a file descriptor.

> However, if one process is forked from the other, the parent
> can mmap an anonymous block and the child will inherit that
> mapping.
> 
> (I suppose if both processes had sufficient privileges they
> could map physical memory out of /dev/mem, but that would be
> *really* dangerous!)
> 
> -- 
> Greg



More information about the Python-list mailing list