Ejemplo de cómo se usaria:
#include <sys/types.h>
#include <sys/mman.h>
#include <sys/stat.h>
#include <unistd.h>
#include <fcntl.h>
#include <stdlib.h>
#include <stdio.h>
void error (char * mensaje);
int main (int argc,char *argv[])
{
int descriptor;
void *mapeo;
struct stat estadobuf;
//Abrir el archivo a ser mapeado
if (argc!=2) {
puts("Usar: mapear NombreArchivo");
exit(EXIT_FAILURE);
}
if ((descriptor=open(argv[1],O_RDONLY))<0)
error("Fallo en la apertura (open)");
//Obtener la longitud del archivo a mapear
fstat(fd, &estadobuf); //fstat vuelca su informaci�n en estadobuf
//Mapear el archivo de entrada
if ((map=mmap(0,estadobuf.st_size,PROT_READ,MAP_SHARED,fd,0)) == MAP_FAILED)
error("Fallo al mapear (open)");
//Exito, y operaciones a realizar
printf("Mapeo en meoria de archivo creado");
//si no estuviera protegido conta escritura
//Se podr�a emplear msync para sincronizar los datos
//Para cambiar el tama�o en memoria, habr�a que usar mremap
//Para bloqueos, hay que usar las funciones mlock, mlockall
//munlock, y munlockall
//Cerrar y quitar el mapeo de el archivo
close(descriptor);
nunmap(mapeo,statbuf.stsize);
exit(EXIT_SUCCESS);
}
void error (char * mensaje)
{
perror(mensaje);
exit(EXIT_FAILURE);
}