SHMGET(2) BSD System Calls Manual SHMGET(2)NAMEshmget — obtain a shared memory identifier
LIBRARY
Standard C Library (libc, -lc)
SYNOPSIS
#include <machine/param.h>
#include <sys/types.h>
#include <sys/ipc.h>
#include <sys/shm.h>
int
shmget(key_t key, int size, int flag);
DESCRIPTION
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:
· IPC_PRIVATE may be specified, in which case a new IPC object will be
created.
· 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.
· ftok() may be used to generate a key from a pathname. See ftok(3).
The mode of a newly created IPC object is determined by OR'ing the fol‐
lowing constants into the flag parameter:
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
Upon successful completion, shmget() returns the positive integer identi‐
fier of a shared memory segment. Otherwise, -1 is returned and errno set
to indicate the error.
ERRORSShmget() will fail if:
[EINVAL] Size specified is greater than the size of the previ‐
ously 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 ALSOshmat(2), shmctl(2), shmdt(2), ftok(3)BSD July 3, 1995 BSD