shmget(2) manual page
Table of Contents
shmget - get shared memory segment identifier
#include <sys/types.h>
#include <sys/ipc.h>
#include <sys/shm.h>
int shmget(key_t key, size_t size, int shmflg);
shmget()
returns the shared memory identifier associated with key.
A shared memory
identifier and associated data structure and shared memory segment of at
least size bytes (see intro(2)
) are created for key if one of the following
are true:
- key
- is equal to IPC_PRIVATE
.
- key
- does not already have a shared
memory identifier associated with it, and (shmflg&IPC_CREAT
) is true.
Upon
creation, the data structure associated with the new shared memory identifier
is initialized as follows:
- shm_perm.cuid, shm_perm.uid,
- shm_perm.cgid, and
shm_perm.gid are set equal to the effective user ID
and effective group
ID,
respectively, of the calling process.
- The access permission bits of
- shm_perm.mode are set equal to the access permission bits of shmflg. shm_segsz
is set equal to the value of size.
- shm_lpid, shm_nattch
- shm_atime, and shm_dtime
are set equal to 0.
- shm_ctime
- is set equal to the current time.
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 indicate
the error.
shmget() fails if one or more of the following are true:
- EACCES
- A shared memory identifier exists for key but operation permission
(see intro(2)
) as specified by the low-order 9 bits of shmflg would not
be granted.
- EEXIST
- A shared memory identifier exists for key but both
(shmflg&IPC_CREATE
) and (shmflg&IPC_EXCL
) are true.
- EINVAL
- size is less than
the system-imposed minimum or greater than the system-imposed maximum.
- 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 0.
- ENOENT
- A shared memory identifier does not exist for key and (shmflg&IPC_CREATE
)
is false.
- ENOMEM
- A shared memory identifier and associated shared memory segment
are to be created but the amount of available memory is not sufficient
to fill the request.
- ENOSPC
- A shared memory identifier is to be created
but the system-imposed limit on the maximum number of allowed shared memory
identifiers system-wide would be exceeded.
intro(2)
, shmctl(2)
, shmop(2)
,
stdipc(3C)
The user must explicitly remove shared memory segments
after the last reference to them has been removed.
Table of Contents