Программирование для Linux. Профессиональный подход
Шрифт:
Флаг
5.2.4. Отладка семафоров
С помощью команды
5.3. Отображение файлов в памяти
Благодаря механизму отображаемой памяти процессы получают возможность общаться друг с другом посредством совместно используемого файла. Схематически это можно представить как совместный доступ к именованному сегменту памяти, хотя технически оба механизма реализованы по-разному.
При отображении файла в памяти формируется связь между файлом и памятью процесса. ОС Linux разбивает файл на страничные блоки и копирует их в страницы виртуальной памяти, чтобы они стали доступны в адресном пространстве процесса. Таким образом, процесс сможет обращаться к содержимому файла как к обычной памяти. При записи данных в соответствующую область памяти содержимое файла будет меняться. Это ускоряет доступ к файлам.
Отображаемую память можно представить как буфер, в который загружается все содержимое файла. Если данные, находящиеся в буфере, модифицируются, они записываются обратно в файл. Операции чтения и записи ОС Linux обрабатывает самостоятельно.
Файлы, отображаемые в памяти, можно использовать не только для организации взаимодействия процессов. О других применениях таких файлов пойдет речь в разделе 5.3.5. "Другие применения функции mmap".
5.3.1. Отображение в памяти обычного файла
Для отображения обычного файла в памяти процесса предназначена функция
Ниже перечислены дополнительные флаги, задаваемые в четвертом аргументе.
■
■
■
При успешном завершении функция возвращает указатель на начало области памяти. В противном случае возвращается флаг
По окончании работы с отображаемым файлом его необходимо освободить с помощью функции
5.3.2. Примеры программ
В этом разделе рассматриваются две программы, в которых иллюстрируются чтение и запись файлов, отображаемых в памяти. Первая программа (листинг 5.5) генерирует случайное число и записывает его в отображаемый файл. Вторая программа (листинг 5.6) читает число из файла, выводит его на экран, а затем умножает на 2 и записывает обратно в файл. Обе программы принимают имя файла из командной строки.
Наследие Маозари 4
4. Наследие Маозари
Фантастика:
фэнтези
попаданцы
рейтинг книги
Рассвет русского царства. Книга 2
2. Новая Русь
Фантастика:
альтернативная история
попаданцы
историческое фэнтези
рейтинг книги
По осколкам твоего сердца
2. Хулиган и новенькая
Любовные романы:
современные любовные романы
рейтинг книги
Дважды одаренный. Том VI
6. Дважды одаренный
Фантастика:
аниме
альтернативная история
фэнтези
фантастика: прочее
рейтинг книги
Ожерелье Странника
Приключения:
исторические приключения
рейтинг книги
Газлайтер. Том 17
17. История Телепата
Фантастика:
боевая фантастика
попаданцы
аниме
рейтинг книги
Древесный маг Орловского княжества
1. Орловское княжество
Фантастика:
аниме
фэнтези
фантастика: прочее
попаданцы
рейтинг книги
История западной философии
Пути философии
Научно-образовательная:
история
философия
культурология
рейтинг книги
Я до сих пор не царь. Книга XXVII
27. Дорогой барон!
Фантастика:
юмористическое фэнтези
аниме
попаданцы
рейтинг книги
Кожедуб
1216. Жизнь замечательных людей
Проза:
военная проза
рейтинг книги
КАМЕРГЕРСКИЙ ПЕРЕУЛОК
Фантастика:
фэнтези
рейтинг книги