Archivo de cabecera:
#incluirSintaxis:
void * mmap (void * dirección, size_t longitud, int proteger, int flags, int archivado,Argumentos:
La función toma 6 argumentos:
DIRECCIÓN:
Este argumento ofrece una dirección inicial preferida para el mapeo. Si no existe otro mapeo allí, entonces el núcleo elegirá un límite de página cercano y creará el mapeo; De lo contrario, el núcleo elige una nueva dirección. Si este argumento es nulo, entonces el núcleo puede colocar el mapeo en cualquier lugar donde considere adecuado.
longitud:
Este es el número de bytes que se mapearon.
proteger:
Este argumento se utiliza para controlar qué tipo de acceso está permitido. Este argumento puede ser lógico 'o' de las siguientes banderas Prot_read | Prot_write | Prot_Exec | Prot_none. Los tipos de acceso de lectura, escritura y ejecución son los permisos en el contenido.
banderas:
Este argumento se utiliza para controlar la naturaleza del mapa. Los siguientes son algunos valores comunes de las banderas:
Arranca:
Este es el descriptor de archivo que debe asignarse.
compensar:
Esto se compensa desde donde comenzó la asignación de archivos. En términos simples, el mapeo se conecta a (compensar) a (offset+longitud-1) bytes para el archivo abierto en archivado descriptor.
Valores de retorno:
Sobre el éxito, el mmap () devuelve 0; Para el fracaso, la función devuelve map_failed.
Potencialmente, podemos representar la función de mapa de la siguiente manera:
Para la UNMAP la región mapeada Munmap () Se utiliza la función:
Sintaxis:
int munmap(vacío *DIRECCIÓN, size_t longitud);
Valores de retorno:
Sobre el éxito, el Munmap () devuelve 0; Para el fracaso, la función devuelve -1.
Ejemplos:
Ahora veremos un programa de ejemplo para cada uno de los siguientes llamadas al sistema MMAP ():
Ejemplo 1.C
#incluirEn el ejemplo1.c asignamos memoria usando mmap. Aquí usamos prot_read | Prot_write Protection para leer y escribir en la región mapeada. Usamos el map_private | Map_anónimo de bandera. MAP_PRIVATE se usa porque la región de mapeo no se comparte con otros procesos, y MAP_Anonymous se usa porque aquí, no hemos asignado ningún archivo. Por la misma razón, el descriptor de archivo y el compensar el valor se establece en 0.
Ejemplo2.C
#incluir