1FTOK(3)                    Linux Programmer's Manual                   FTOK(3)
2
3
4

NAME

6       ftok  -  convert  a pathname and a project identifier to a System V IPC
7       key
8

SYNOPSIS

10       #include <sys/ipc.h>
11
12       key_t ftok(const char *pathname, int proj_id);
13

DESCRIPTION

15       The ftok() function uses the identity of the file named  by  the  given
16       pathname  (which  must  refer  to an existing, accessible file) and the
17       least significant 8 bits of proj_id (which must be nonzero) to generate
18       a  key_t  type  System  V  IPC  key,  suitable  for use with msgget(2),
19       semget(2), or shmget(2).
20
21       The resulting value is the same for all pathnames that  name  the  same
22       file,  when  the  same  value  of  proj_id is used.  The value returned
23       should be different when the (simultaneously  existing)  files  or  the
24       project IDs differ.
25

RETURN VALUE

27       On  success,  the  generated key_t value is returned.  On failure -1 is
28       returned, with errno indicating the error as  for  the  stat(2)  system
29       call.
30

ATTRIBUTES

32       For  an  explanation  of  the  terms  used  in  this  section,  see at‐
33       tributes(7).
34
35       ┌────────────────────────────────────────────┬───────────────┬─────────┐
36Interface                                   Attribute     Value   
37       ├────────────────────────────────────────────┼───────────────┼─────────┤
38ftok()                                      │ Thread safety │ MT-Safe │
39       └────────────────────────────────────────────┴───────────────┴─────────┘
40

CONFORMING TO

42       POSIX.1-2001, POSIX.1-2008.
43

NOTES

45       On some ancient systems, the prototype was:
46
47           key_t ftok(char *pathname, char proj_id);
48
49       Today, proj_id is an int, but still only 8 bits are used.  Typical  us‐
50       age has an ASCII character proj_id, that is why the behavior is said to
51       be undefined when proj_id is zero.
52
53       Of course, no guarantee can  be  given  that  the  resulting  key_t  is
54       unique.   Typically,  a  best-effort attempt combines the given proj_id
55       byte, the lower 16 bits of the inode number, and the lower  8  bits  of
56       the  device number into a 32-bit result.  Collisions may easily happen,
57       for example between files on /dev/hda1 and files on /dev/sda1.
58

EXAMPLES

60       See semget(2).
61

SEE ALSO

63       msgget(2), semget(2), shmget(2), stat(2), sysvipc(7)
64

COLOPHON

66       This page is part of release 5.13 of the Linux  man-pages  project.   A
67       description  of  the project, information about reporting bugs, and the
68       latest    version    of    this    page,    can     be     found     at
69       https://www.kernel.org/doc/man-pages/.
70
71
72
73GNU                               2021-03-22                           FTOK(3)
Impressum