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
34       attributes(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
50       usage  has an ASCII character proj_id, that is why the behavior is said
51       to 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

SEE ALSO

60       msgget(2), semget(2), shmget(2), stat(2), sysvipc(7)
61

COLOPHON

63       This page is part of release 5.04 of the Linux  man-pages  project.   A
64       description  of  the project, information about reporting bugs, and the
65       latest    version    of    this    page,    can     be     found     at
66       https://www.kernel.org/doc/man-pages/.
67
68
69
70GNU                               2019-08-02                           FTOK(3)
Impressum