Proyecta el contenido de un archivo en memoria.
Sintaxis
#include
#include
void *mmap (void *start, size_t length, int prot, int flags, int fd, off_t offset);
start
Dirección para alojar la proyección. Si NULL el sistema elige.
length
Cantidad del fichero a mapear.
prot
Describe la protección de memoria deseada:
PROT_EXEC = Se permite ejecución
PROT_READ = Se permite leer.
PROT_WRITE = Se permite escribir.
PROT_NONE = Las páginas no pueden ser accedidas.
Nota: Estas opciones se pueden combinar separándolas por “|”.
flags
Modificadores de acceso:
MAP_FIXED No seleccionar una dirección diferente a la especificada. Si la dirección especificada no puede ser utilizada, mmap fallará.
MAP_SHARED Comparte este área con todos los otros procesos que señalan a este objeto.
MAP_PRIVATE Crear un área privada "copy-on-write".
MAP_ANON, MAPDENY_WRITE, MAP_LOCKED.
fd
Descriptor del fichero a usar. Previamente debe haber sido abierto.
offset
Desplazamiento del comienzo del mapeo en el archivo.
/*Ejemplo de programa de usuario*/
void main()
{
/*...*/
/*Obtener nombre y tamaño del archivo y abrirlo*/
/*Proyección del archivo en memoria*/
addr= (char *) mmap(NULL, Size, PROT_READ, MAP_SHARED, fd, (off_t) 0);
/*Cierre del archivo*/
/*Visualización del contenido del archivo*/
for (int i = 0; i
/*Liberación del archivo*/
flag=munmap (addr, Size);
/*...*/
}
No hay comentarios:
Publicar un comentario