Стивенс Уильям Ричард
Шрифт:
Программа shmwrite
В листинге 13.3 приведен текст программы shmwrite, записывающей последовательность 0, 1, 2 254, 244, 0, 1 и т. д. в объект разделяемой памяти.
10-15 Объект разделяемой памяти открывается вызовом shm_open. Его размер мы узнаем с помощью fstat. Затем файл отображается в память вызовом mmap, после чего его дескриптор может быть закрыт.
16-18 Последовательность записывается в разделяемую память.
Программа shmread
Программа shmread (листинг 13.4) проверяет значения, помещенные в разделяемую память программой shmwrite.
10-15 Объект разделяемой памяти открывается только для чтения, его размер получается вызовом fstat, после чего он отображается в память с доступом только на чтение, а дескриптор закрывается.
16-19 Проверяются значения, помещенные в разделяемую память вызовом shmwrite.
Примеры
Создадим объект разделяемой памяти с именем /tmp/myshm объемом 123 456 байт в системе Digital Unix 4.0B:
Мы видим, что файл с указываемым при создании объекта разделяемой памяти именем появляется в файловой системе. Используя программу od, мы можем выяснить, что после создания файл целиком заполнен нулями (восьмеричное число 0361100 — сдвиг, соответствующий байту, следующему за последним байтом файла, — эквивалентно десятичному 123 456).
Запустим программу shmwrite и убедимся в правильности записываемых значений с помощью программы od: