Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages


home | help
ftok(3C)		 Standard C Library Functions		      ftok(3C)

       ftok - generate an IPC key

       #include	<sys/ipc.h>

       key_t ftok(const	char *path, int	id);

       The  ftok()  function returns a key based on path and id	that is	usable
       in subsequent calls to msgget(2), semget(2) and shmget(2). The path ar-
       gument  must  be	 the  pathname of an existing file that	the process is
       able to	stat(2).

       The ftok() function will	return the same	key value for all  paths  that
       name the	same file, when	called with the	same id	value, and will	return
       different key values when called	with different id values.

       If the file named by path is removed while still	referred to by a  key,
       a  call	to  ftok()  with the same path and id returns an error.	If the
       same file is recreated, then a call to ftok() with the same path	and id
       is likely to return a different key.

       Only  the  low  order  8-bits  of  id are significant.  The behavior of
       ftok() is unspecified if	these bits are 0.

       Upon successful completion, ftok() returns a  key.   Otherwise,	ftok()
       returns (key_t)-1 and sets errno	to indicate the	error.

       The ftok() function will	fail if:

       EACCES		       Search  permission is denied for	a component of
			       the path	prefix.

       ELOOP		       Too many	symbolic links were encountered	in re-
			       solving path.

       ENAMETOOLONG	       The   length   of  the  path  argument  exceeds
			       {PATH_MAX}   or a pathname component is	longer
			       than {NAME_MAX}.

       ENOENT		       A  component  of	path does not name an existing
			       file or path is an empty	string.

       ENOTDIR		       A component of the path prefix is not a	direc-

       The ftok() function may fail if:

       ENAMETOOLONG	       Pathname	resolution of a	symbolic link produced
			       an intermediate	result	whose  length  exceeds
			       {PATH_MAX}  .

       For maximum portability,	id should be a single-byte character.

       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 unintention-
       ally interfere with each	other's	operation. It is still possible	to in-
       terfere	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.

       Since the ftok()	function returns a value based on the id given and the
       file serial number of the file named by path  in	 a  type  that	is  no
       longer  large enough to hold all	file serial numbers, it	may return the
       same key	for paths naming different files on large filesystems.

       See attributes(5) for descriptions of the following attributes:

       |      ATTRIBUTE	TYPE	     |	    ATTRIBUTE VALUE	   |
       |Interface Stability	     |Standard			   |
       |MT-Level		     |MT-Safe			   |

       msgget(2), semget(2), shmget(2),	stat(2), attributes(5),	standards(5)

SunOS 5.10			  24 Jul 2002			      ftok(3C)


Want to link to this manual page? Use this URL:

home | help