stdipc(3C) manual page
Table of Contents
stdipc, ftok - standard interprocess communication package
#include <sys/types.h>
#include <sys/ipc.h>
key_t ftok(const char *path, int id);
See the NOTES section of this
page.
Certain interprocess communication facilities require
the user to supply a key to be used by the msgget(2)
, semget(2)
, and shmget(2)
functions to obtain interprocess communication identifiers. One suggested
method for forming a key is to use the ftok() subroutine described below.
Another way to compose keys is to include the project ID
in the most significant
byte and to use the remaining portion as a sequence number. There are many
other ways to form keys, but it is necessary for each system to define
standards for forming them. If some standard is not adhered to, it will
be possible for unrelated processes to unintentionally interfere with each
other’s operation. It is still possible to interfere intentionally. Therefore,
it is strongly suggested that the most significant byte of a key in some
sense refer to a project so that keys do not conflict across a given system.
ftok() returns a key based on path and id that is usable in subsequent
msgget(), semget(), and shmget() functions. path must be the path name
of an existing file that is accessible to the process. id is a character
that uniquely identifies a project. Note that ftok() returns the same key
for linked files when called with the same id and that it returns different
keys when called with the same file name but different ids.
ftok()
returns (key_t) -1 if path does not exist or if it is not accessible to
the process.
intro(2)
, msgget(2)
, semget(2)
, shmget(2)
If the
file whose path is passed to ftok() is removed when keys still refer to
the file, future calls to ftok() with the same path and id return an error.
If the same file is recreated, then ftok() is likely to return a different
key from the original call.
ftok() is MT-Safe in mutli-thread applications.
Table of Contents