mmap_shared - memory map a file for reading and writing
(const char* filename
mmap_shared opens filename
for reading and writing, maps the whole file
into memory, closes the file, writes the length of the file to filesize
and returns a pointer to the mapped file.
The file is mapped shared. Changes done to the mapped region are written to disk
and are visible to other processes reading from the file or mapping the same
file into memory.
The file is unmapped by the operating system if the process terminates. It can
also be manually unmapped by calling munmap
To write changes to disk immediately, you can use msync from <sys/mman.h>.
If the file could not be opened or mapped, (void*)0 is returned.