mmap_private 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 copy-on-write. Changes done to the mapped region
will not be written to disk.
The file is unmapped by the operating system if the process terminates.
It can also be manually unmapped by calling munmap from
If the file could not be opened or mapped, (void*)0 is returned.