*nix Documentation Project
·  Home
 +   man pages
·  Linux HOWTOs
·  FreeBSD Tips
·  *niX Forums

  man pages->FreeBSD man pages -> shmget (2)              



NAME    [Toc]    [Back]

     shmget -- obtain a shared memory identifier

LIBRARY    [Toc]    [Back]

     Standard C Library (libc, -lc)

SYNOPSIS    [Toc]    [Back]

     #include <machine/param.h>
     #include <sys/types.h>
     #include <sys/ipc.h>
     #include <sys/shm.h>

     shmget(key_t key, size_t size, int flag);

DESCRIPTION    [Toc]    [Back]

     Based on the values of key and flag, shmget() returns the identifier of a
     newly created or previously existing shared memory segment.  The key is
     analogous to a filename: it provides a handle that names an IPC object.
     There are three ways to specify a key:

     +o	 IPC_PRIVATE may be specified, in which case a new IPC object will be

     +o	 An integer constant may be specified.	If no IPC object corresponding
	 to key is specified and the IPC_CREAT bit is set in flag, a new one
	 will be created.

     +o	 The ftok(3) may be used to generate a key from a pathname.

     The mode of a newly created IPC object is determined by OR'ing the following
 constants into the flag argument:

     SHM_R	   Read access for user.

     SHM_W	   Write access for user.

     (SHM_R>>3)    Read access for group.

     (SHM_W>>3)    Write access for group.

     (SHM_R>>6)    Read access for other.

     (SHM_W>>6)    Write access for other.

     When creating a new shared memory segment, size indicates the desired
     size of the new segment in bytes.	The size of the segment may be rounded
     up to a multiple convenient to the kernel (i.e., the page size).

RETURN VALUES    [Toc]    [Back]

     Upon successful completion, shmget() returns the positive integer identifier
 of a shared memory segment.  Otherwise, -1 is returned and errno set
     to indicate the error.

ERRORS    [Toc]    [Back]

     The shmget() system call will fail if:

     [EINVAL]		Size specified is greater than the size of the previously
 existing segment.  Size specified is less than
			the system imposed minimum, or greater than the system
			imposed maximum.

     [ENOENT]		No shared memory segment was found matching key, and
			IPC_CREAT was not specified.

     [ENOSPC]		The kernel was unable to allocate enough memory to
			satisfy the request.

     [EEXIST]		IPC_CREAT and IPC_EXCL were specified, and a shared
			memory segment corresponding to key already exists.

SEE ALSO    [Toc]    [Back]

     shmat(2), shmctl(2), shmdt(2), ftok(3)

FreeBSD 5.2.1			 July 3, 1995			 FreeBSD 5.2.1
[ Back ]
 Similar pages
Name OS Title
shmget IRIX get shared memory segment identifier
shmget OpenBSD get shared memory area identifier
ipcrm HP-UX remove a message queue, semaphore set, or shared memory identifier
shm_open FreeBSD open or create a shared memory object shm_unlink -- remove a shared memory object
pthread_condattr_getpshared Tru64 Obtain the process-shared attribute of a condition variable attributes object
shmx Tru64 shared memory exerciser
shmctl Linux shared memory control
shmdt OpenBSD map/unmap shared memory
shmop Linux shared memory operations
shmdt NetBSD map/unmap shared memory
Copyright © 2004-2005 DeniX Solutions SRL
newsletter delivery service