НАЗВАНИЕ
stdipc: ftok - стандартный пакет для обмена сообщениями
между процессами
СИНТАКСИС
#include <sys/types.h> #include <sys/ipc.h> key_t ftok (path, id) char *path; char id;
ОПИСАНИЕ
Все средства обмена между процессами требуют от пользователя передачи ключа системным вызовам msgget(2),
semget(2) и shmget(2), предоставляющим идентификаторы
очередей сообщений. Один из предлагаемых способов формирования ключа - использование описываемой ниже функции ftok. Другой путь составления ключей - поместить
идентификатор проекта в старший байт и использовать оставшуюся часть как порядковый номер. Есть много других
способов формирования ключей, но для каждой системы необходимо определить стандарт на их формирование. Если
стандарт не соблюдается, то возможно, что не связанные
между собой процессы будут непреднамеренно конфликтовать. Следует настоятельно рекомендовать помещать в
старший байт ключа символ, каким-либо образом идентифицирующий проект; тогда ключи не будут пересекаться в
пределах данной системы.
Функция ftok возвращает ключ, сформированный по заданным значениям path и id и готовый для использования в последующих системных вызовах msgget, semget и shmget. Аргумент path должен быть указателем на маршрутное имя существующего файла, доступного данному процессу. Аргумент id должен задавать символ, однозначно идентифицирующий проект. Заметим, что функция ftok возвращает одинаковые ключи для разных ссылок на один и тот же файл, если задается одно и то же значение id, и разные ключи, если задаются одинаковые имена файлов, но разные значения id.
СМ. ТАКЖЕ
intro(2), msgget(2), semget(2), shmget(2).
ДИАГНОСТИКА
Функция ftok возвращает значение (key_t) -1, если файл
с заданным маршрутным именем path не существует или
этот файл не доступен процессу.
ПРЕДОСТЕРЕЖЕНИЯ
Если файл, имя которого передавалось функции ftok, удаляется, когда ключ еще ссылается на файл, то последующие вызовы функции ftok с теми же аргументами path и id завершаются неудачей. Если файл с тем же именем создается заново, то функция ftok, вероятно, возвратит другой ключ, отличный от того, что был выдан для первоначального файла.