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/types.h>
11       #include <sys/ipc.h>
12
13       key_t ftok(const char *pathname, int proj_id);
14

DESCRIPTION

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

RETURN VALUE

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

ATTRIBUTES

33       For  an  explanation  of  the  terms  used  in  this  section,  see at‐
34       tributes(7).
35
36       ┌──────────┬───────────────┬─────────┐
37Interface Attribute     Value   
38       ├──────────┼───────────────┼─────────┤
39ftok()    │ Thread safety │ MT-Safe │
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.10 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                               2020-04-11                           FTOK(3)
Impressum