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

Синтаксис
 
# include <sys/types.h>
# include <sys/ipc.h>

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. Возвращаемое значение должно отличаться, когда (одновременно существующие) файлы или идентификаторы проекта различаются.

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

Замечания
  В 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.


Список системных вызовов