[ Страница назад | Страница вперед | Содержание | Индекс | Библиотека |
Юридическая информация |
Поиск ]
Программирование: Разработка и отладка программ
Нет.
- Создайте ключ для
идентификации общего сегмента. Для этого вызовите функцию ftok. Например, для создания ключа
mykey с идентификатором проекта R, хранящимся в
переменной proj (тип char) и именем файла
null_file, воспользуйтесь следующим оператором:
mykey = ftok( null_file, proj );
- Выполните одно из
следующих действий:
- Создайте общий сегмент
памяти с помощью функции shmget. Например, для создания
сегмента размером 4096 и присвоения значения shmid целочисленной
переменной mem_id, используйте следующее выражение:
mem_id = shmget(mykey, 4096, IPC_CREAT | o666 );
- Получите указатель на
ранее созданный общий сегмент с помощью функции shmget.
Например, для того чтобы получить ссылку на сегмент, ранее связанный с ключом
mykey и присвоить значение shmid целочисленной
переменной mem_id, укажите в программе оператор:
mem_id = shmget( mykey, 4096, IPC_ACCESS );
- Предоставьте общий
сегмент процессу с помощью функции shmat. Например, для
подключения созданного сегмента можно воспользоваться оператором
ptr = shmat( mem_id );
В этом примере переменная ptr представляет собой указатель на
структуру, определяющую поля общего сегмента. Такая структура-шаблон
применяется для чтения и записи данных в общий сегмент. Шаблон должен
совпадать для всех процессов, работающих с общим сегментом.
- Выполните необходимые
операции с данными сегмента, пользуясь шаблонной структурой.
- Отключите общий сегмент
от процесса с помощью функции shmdt:
shmdt( ptr );
- Если общий сегмент
больше не нужен, удалите его с помощью функции shmctl:
shmctl( mem_id, IPC_RMID, ptr );
Примечание: Для получения информации о сегменте можно также
использовать команду ipcs, а для удаления
сегмента - команду ipcrm.
Отображение памяти - Основные сведения.
Отображение общих сегментов памяти с помощью процедуры shmat.
Создание отображенных файлов данных с помощью функции shmat.
Создание отображенного файла с записью по команде с помощью функции shmat.
Функции shmat, shmctl, shmdt,
shmget.
[ Страница назад | Страница вперед | Содержание | Индекс |
Библиотека |
Юридическая информация |
Поиск ]