Чтение пустой страницы из другого процесса - PullRequest
2 голосов
/ 13 апреля 2011

У меня есть процесс производителя, который записывает в файл mmap'd, и потребительский процесс, который читает из него.Это в Linux.

Если производитель вносит изменения в mmap и он не мгновенно сбрасывается, когда потребитель получает к нему доступ, что происходит?Получит ли он старую версию с диска, или она достаточно умна, чтобы получить открытую страницу?

1 Ответ

2 голосов
/ 13 апреля 2011

со страницы mmap() :

MAP_SHARED

Поделитесь этим отображением со всеми другими процессами, которые отображают этот объект. Хранение в регионе эквивалентно запись в файл. Файл не может на самом деле обновляться до msync (2) или munmap (2) называется.

Итог: изменения будут немедленно видны другим процессам, если вы укажете это при вызове mmap(). Согласно документации, у вас есть для использования MAP_SHARED или MAP_PRIVATE, который управляет поведением в отношении других процессов, отображающих ту же файловую область.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...