sirve que principales para libreria lenguaje inclusiones incluir incluidos funciones funcion crear cabecera archivos archivo c mmap

que - ¿Debo mantener abierto un archivo después de llamar a mmap?



para que sirve include en c (1)

Tengo un programa que mapea bastantes (100) de archivos considerables de 10-100MB cada uno. Los necesito a todos asignados al mismo tiempo.

En este momento estoy llamando open seguido de mmap al comienzo del programa, seguido de munmap y close al final.

A menudo tengo que ajustar el límite de archivos abiertos corriendo ulimit -n antes de ejecutar el programa.

La pregunta es, ¿de verdad necesito mantener los archivos abiertos, o puedo open mmap close un gran procesamiento de datos, luego munmap cuando haya terminado.

Las páginas man de mmap no me parecen terriblemente claras en este caso.


No, al menos no en Linux, está bien cerrar el archivo.

La página del manual establece claramente:

Por otro lado, al cerrar el descriptor de archivo no se desasigna la región.

Para la portabilidad, también revisé el manual de POSIX , dice lo mismo (aunque aún más claro):

La función mmap () agrega una referencia adicional al archivo asociado con los archivos descriptores del archivo que no se elimina mediante un cierre () posterior en ese descriptor de archivo. Esta referencia se elimina cuando no hay más asignaciones al archivo.