Вы указали неправильные флаги и дескриптор файла.Похоже, что вам нужно анонимное (не подкрепленное файлом) отображение.В этом случае правильный вызов будет:
x = mmap(0, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0);
Вам нужно использовать флаг MAP_ANONYMOUS
, чтобы сообщить Linux, что файла нет.И вы должны передать -1
для дескриптора файла, а не 0.