SHMGET(2)

NAME
shmget - obtain a shared memory identifier

SYNOPSIS
#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 following 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 identifier of a shared memory segment. Otherwise, -1 is returned and errno set to indicate the error.

ERRORS
Shmget() 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
shmctl(2), shmat(2), shmdt(2), ftok(3)