mmap

Landstreicher

Если я открою файл, сделаю на него mmap, потом закрою, а потом буду работать с замапленой областью - что произойдет? Я думал что процессу пошлют SIGSEGV (файл-то уже закрыт). Практика показывает, что всем пофигу - как был файл замаплен, так и остается, делай с ним чего хочешь.
1) Это нормально явление или бага?
2) Если так должно быть, то в каком месте делается unmap и тому подобные вещи? Кто-то ведь должен все это отмапить по завершении процесса.
PS. OS = Linux 2.4

abrek

> Это нормально явление или бага?
типа нормально
> в каком месте делается unmap и тому подобные вещи?
В sys_exit смотрел?

Landstreicher

> типа нормально
Такое поведение где-то документировано?
> В sys_exit смотрел?
Смотрел. sys_exit вызывает do_exit, а тот exit_files. Я почему-то был уверен что это там, но там этого не оказалось. Ладно, пойду смотреть дальше. Спасибо.

Landstreicher

все, нашел. функция exit_mmap. уже торможу под вечер.

kanareykina

>Такое поведение где-то документировано?
кусок мана, где про это вскользь упомянуто:
The munmap system call deletes the mappings for the specified address range, and causes further references to
addresses within the range to generate invalid memory references. The region is also automatically unmapped when
the process is terminated. On the other hand, closing the file descriptor does not unmap the region.

Landstreicher

Thanx.
Оставить комментарий
Имя или ник:
Комментарий: