Проверьте возвращаемые значения ваших системных вызовов!
Аргумент flags
для mmap
должен иметь ровно одну из следующих двух опций:
MAP_SHARED
Share this mapping. Updates to the mapping are visible to other processes
that map this file, and are carried through to the underlying file. The file
may not actually be updated until msync(2) or munmap() is called.
MAP_PRIVATE
Create a private copy-on-write mapping. Updates to the mapping are not
visible to other processes mapping the same file, and are not carried through
to the underlying file. It is unspecified whether changes made to the file
after the mmap() call are visible in the mapped region.
Вы этого не предоставляете, поэтому, скорее всего, mmap
завершится неудачно (вернув (void*)-1
), если errno
установлено на EINVAL
.