Документация по LinuxLinuxDoc.Ru 🔍

ftok - преобразовывает имя файла и идентификатор проекта в ключ для системных вызовов

НАЗВАНИЕ
ftok - преобразовывает имя файла и идентификатор проекта в
ключ для системных вызовов

СИНТАКСИС

# include
# include

key_t ftok(const char *pathname, int proj_id);

ОПИСАНИЕ
Функция ftok использует файл с именем pathname (которое
должно указывать на существующий файл к которому есть
доступ) и младшие 8 бит proj_id (который должен быть
отличен от нуля) для создания ключа с типом key_t,
используемого в System V IPC для работы с msgget(2),
semget(2), и shmget(2).

Возвращаемое значение одинаково для всех имен, указывающих
на один и тот же файл при одинаковом значении proj_id.
Возвращаемое значение должно отличаться, когда
(одновременно существующие) файлы или идентификаторы
проекта различаются.

ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ

В случае удачного завершения вызова возвращается значение
созданного ключа key_t. При ошибке возвращается -1, а в
переменную errno записывается код ошибки согласно
системному вызову stat(2).

СООТВЕТСТВИЕ СТАНДАРТАМ
XPG4

ЗАМЕЧАНИЯ
В libc4 и libc5 (а также под SunOS 4.x) прототип функции
выглядел так:
key_t ftok(char *pathname, char proj_id);
В наши дни proj_id имеет тип int, хотя, как правило,
используются только 8 бит. Обычно при вызове этой функции
в качестве proj_id передается символ ASCII, именно поэтому
поведение функции считается не определенным в случае, если
proj_id равен нулю.

Естественно, не гарантируется, что возвращаемый ключ key_t
уникален. Обычно производится объединение указанного байта
proj_id с младшими 16 битами номера i-node и младшими 8
битам номера устройства в 32-битный результат. Легко могут
возникать конфликты, например мужд файлами на /dev/hda1 и
файлами на /dev/sda1.
Читать новости Linux в Telegram
Linux - ftok - преобразовывает имя файла и идентификатор проекта в ключ для системных вызовов
Мы в соцсетях ✉