[ Страница назад | Страница вперед | Содержание | Индекс | Библиотека | Юридическая информация | Поиск ]

Программирование: Разработка и отладка программ


Создание общего сегмента памяти с помощью функции shmat

Предварительные требования

Нет.

Процедура

  1. Создайте ключ для идентификации общего сегмента. Для этого вызовите функцию ftok. Например, для создания ключа mykey с идентификатором проекта R, хранящимся в переменной proj (тип char) и именем файла null_file, воспользуйтесь следующим оператором:

    mykey = ftok( null_file, proj );
    
  2. Выполните одно из следующих действий:
  3. Предоставьте общий сегмент процессу с помощью функции shmat. Например, для подключения созданного сегмента можно воспользоваться оператором

    ptr = shmat( mem_id );
    

    В этом примере переменная ptr представляет собой указатель на структуру, определяющую поля общего сегмента. Такая структура-шаблон применяется для чтения и записи данных в общий сегмент. Шаблон должен совпадать для всех процессов, работающих с общим сегментом.

  4. Выполните необходимые операции с данными сегмента, пользуясь шаблонной структурой.
  5. Отключите общий сегмент от процесса с помощью функции shmdt:

    shmdt( ptr );
    
  6. Если общий сегмент больше не нужен, удалите его с помощью функции shmctl:

    shmctl( mem_id, IPC_RMID, ptr );
    

    Примечание: Для получения информации о сегменте можно также использовать команду ipcs, а для удаления сегмента - команду ipcrm.

Связанная информация

Отображение памяти - Основные сведения.

Отображение общих сегментов памяти с помощью процедуры shmat.

Создание отображенных файлов данных с помощью функции shmat.

Создание отображенного файла с записью по команде с помощью функции shmat.

Функции shmat, shmctl, shmdt, shmget.


[ Страница назад | Страница вперед | Содержание | Индекс | Библиотека | Юридическая информация | Поиск ]