shmget(2) [opendarwin man page]
SHMGET(2) BSD System Calls Manual SHMGET(2) NAME
shmget -- get shared memory area identifier SYNOPSIS
#include <sys/types.h> #include <sys/ipc.h> #include <sys/shm.h> int shmget(key_t key, int size, int shmflg); DESCRIPTION
shmget() returns the shared memory identifier associated with the key key. A shared memory segment is created if either key is equal to IPC_PRIVATE, or key does not have a shared memory segment identifier associated with it, and the IPC_CREAT bit is set in shmflg. If a new shared memory segment is created, the data structure associated with it (the shmid_ds structure, see shmctl(2)) is initialized as follows: o shm_perm.cuid and shm_perm.uid are set to the effective uid of the calling process. o shm_perm.gid and shm_perm.cgid are set to the effective gid of the calling process. o shm_perm.mode is set to the lower 9 bits of shmflg. o shm_lpid, shm_nattch, shm_atime, and shm_dtime are set to 0 o shm_ctime is set to the current time. o shm_segsz is set to the value of size. RETURN VALUES
Upon successful completion a positive shared memory segment identifier is returned. Otherwise, -1 is returned and the global variable errno is set to indicate the error. ERRORS
[EACESS] A shared memory segment is already associated with key and the caller has no permission to access it. [EEXIST] Both IPC_CREAT and IPC_EXCL are set in shmflg, and a shared memory segment is already associated with key. [ENOSPC] A new shared memory indentifier could not be created because the system limit for the number of shared memory identifiers has been reached. [ENOENT] IPC_CREAT was not set in shmflg and no shared memory segment associated with key was found. [ENOMEM] There is not enough memory left to created a shared memory segment of the requested size. SEE ALSO
shmctl(2), shmat(2), shmdt(2) BSD
August 17, 1995 BSD
Check Out this Related Man Page
shmget(2) System Calls Manual shmget(2) Name shmget - 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 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: 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 operations 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 Also shmctl(2), shmop(2), ftok(3) shmget(2)