Основы операционных систем. Практикум



         

Пространство имен. Адресация в System V IPC. Функция ftok() - часть 2


Следует отметить, что преобразование из текстового имени файла в число основывается на расположении указанного файла на жестком диске или ином физическом носителе. Поэтому для образования ключа следует применять файлы, не меняющие своего положения в течение времени организации взаимодействия процессов;
  • Второй компонент значения ключа используется для того, чтобы позволить программисту связать с одним и тем же именем файла более одного экземпляра каждого средства связи. В качестве такого компонента можно задавать порядковый номер соответствующего экземпляра.
  • Получение значения ключа из двух компонентов осуществляется функцией ftok().

    Функция для генерации ключа System V IPC

    Прототип функции

    #include <sys/types.h> #include <sys/ipc.h> key_t ftok(char *pathname, char proj);

    Описание функции

    Функция ftok служит для преобразования имени существующего файла и небольшого целого числа, например, порядкового номера экземпляра средств связи, в ключ System V IPC.

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

    Параметр proj – это небольшое целое число, характеризующее экземпляр средства связи.

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

    Еще раз подчеркнем три важных момента, связанных с использованием имени файла для получения ключа. Во-первых, необходимо указывать имя файла, который уже существует в файловой системе и для которого процесс имеет право доступа на чтение (не путайте с заданием имени файла при создании FIFO, где указывалось имя для вновь создаваемого специального файла). Во-вторых, указанный файл должен сохранять свое положение на диске до тех пор, пока все процессы, участвующие во взаимодействии, не получат ключ System V IPC. В-третьих, задание имени файла, как одного из компонентов для получения ключа, ни в коем случае не означает, что информация, передаваемая с помощью ассоциированного средства связи, будет располагаться в этом файле.Информация будет храниться внутри адресного пространства операционной системы, а заданное имя файла лишь позволяет различным процессам сгенерировать идентичные ключи.




    Содержание  Назад  Вперед