Linux and UNIX Man Pages

Linux & Unix Commands - Search Man Pages

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)
Man Page