shmget(2) shmget(2)NAME shmget - get shared memory segment SYNOPSIS #include <sys/types.h> #include <sys/ipc.h> #include <sys/shm.h> int shmget(key, size, shmflg) key_t key; int Isize, shmflg; DESCRIPTION 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 size bytes are created for key if one of the following is true (see intro(2)): key is equal to IPC_PRIVATE. key does not already have a shared memory identifier associated with it, and (shmflg & IPC_CREAT) is ``true''. Note: A shared memory segment of size is always rounded up to the nearest whole page. The key IPC_PRIVATE will create an identifier and associated data structure that is unique to the calling process and its children. 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 low-order 9 bits of shm_perm.mode are set equal to the low-order 9 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. January 1992 1
shmget(2) shmget(2)STATUS MESSAGES AND 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 indicate the error. The shmget command will fail if one or more of the following is true: EINVAL size is less than the system-imposed minimum or greater than the system-imposed maximum. 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. EAGAIN The system has temporarily exhausted its available memory or swap space. 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 system-wide identifiers would be exceeded. ENOMEM A shared memory identifier and 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) && (shmflg & IPC_EXCL)) is ``true''. SEE ALSO intro(2), shmctl(2), shmop(2) 2 January 1992