El permiso denegado aparece en la función mmap() de Linux
int fd=open("./a.txt", O_WRONLY); //Este lugar está mal. Debes abrirlo en modo lectura-escritura. En lugar de simplemente escribir el camino.
Por ejemplo: int fd=open("./a.txt", O_RDWR); de esta manera, no se informará ningún error después del cambio.