shmget(2)shmget(2)Nameshmget - get shared memory segment
Syntax
#include <sys/types.h>
#include <sys/ipc.h>
#include <sys/shm.h>
int shmget (key, size, shmflg)
key_t key;
int size, shmflg;
Description
The system call returns the shared memory identifier associated with
key.
A shared memory identifier and associated data structure and shared
memory segment of size size bytes are created for key, if one of the
following is true:
The key is equal to IPC_PRIVATE. For further information, see
The key does not already have a shared memory identifier associ‐
ated with it, and (shmflg & IPC_CREAT ) is true.
Upon creation, the data structure associated with the new shared memory
identifier is initialized as follows:
The and are set equal to the effective user ID and effective group
ID of the calling process.
The low-order nine bits of are set equal to the low-order nine
bits of shmflg. The is set equal to the value of size.
The and are set equal to zero (0). The shm_ctime is set equal to
the current time.
Return Values
Upon successful completion, a non-negative integer, namely, a shared
memory identifier is returned. Otherwise, a value of -1 is returned
and errno is set to indicated the error.
Diagnostics
The system call fails if any of the following is true:
[EINVAL] The size is less than the system-imposed minimum or
greater than the system-imposed maximum.
[EACCES] A shared memory identifier exists for key, but opera‐
tions permission, as specified by the low-order nine
bits of shmflg, would not be granted. For further
information, see
[EINVAL] A shared memory identifier exists for key, but the size
of the segment associated with it is less than size and
size is not equal to zero.
[ENOENT] A shared memory identifier does not exist for key, and
(shmflg & IPC_CREAT ) is false.
[ENOSPC] A shared memory identifier is to be created, but the
system-imposed limit on the maximum number of allowed
shared memory identifiers would be exceeded.
[ENOMEM] A shared memory identifier and the associated shared
memory segment are to be created, but the amount of
available physical memory is not sufficient to fill the
request.
[EEXIST] A shared memory identifier exists for key, but ((shmflg
& IPC_CREAT ) and (shmflg & IPC_EXCL )) is true.
See Alsoshmctl(2), shmop(2), ftok(3)shmget(2)