Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
УТС 4 семестр / задание_os5.doc
Скачиваний:
2
Добавлен:
08.08.2022
Размер:
186.37 Кб
Скачать
  1. Закрытие объекта:

CloseHandle(hMapFile);

Посмотрим, как то же самое делается в Линукс:

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

mykey = ftok(null_file,proj);

  1. Выполните одно из следующих действий:

    1. Создайте общий сегмент памяти с помощью функции shmget. Например, для создания сегмента размером 4096 и присвоения значения shmid целочисленной переменной mem_id, используйте следующее выражение:

mem_id = shmget(mykey,4096,IPC_CREAT|o666);

    1. Получите указатель на ранее созданный общий сегмент с помощью функции shmget. Например, для того чтобы получить ссылку на сегмент, ранее связанный с ключом mykey и присвоить значение shmid целочисленной переменной mem_id, укажите в программе оператор:

mem_id = shmget(mykey,4096,IPC_ACCESS);

  1. Предоставьте общий сегмент процессу с помощью функции shmat. Например, для подключения созданного сегмента можно воспользоваться оператором

ptr = shmat(mem_id);

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

  1. Выполните необходимые операции с данными сегмента, пользуясь шаблонной структурой.

  1. Отключите общий сегмент от процесса с помощью функции shmdt:

shmdt(ptr);

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

shmctl(mem_id,IPC_RMID,ptr);

23

Раздел 5

Соседние файлы в папке УТС 4 семестр