Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages


home | help
shmget(2)			 System	Calls			     shmget(2)

       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);

       The  shmget()  function 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:

	 o  The	key argument is	equal to IPC_PRIVATE.

	 o  The	key argument 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:

	 o  The	values	of  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.

	 o  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.

	 o  The	values of shm_lpid, shm_nattch shm_atime,  and	shm_dtime  are
	    set	equal to 0.

	 o  The	shm_ctime is set equal to the current time.

       Shared memory segments must be explicitly removed after the last	refer-
       ence to them has	been removed.

       Upon successful	completion,  a	non-negative  integer  representing  a
       shared memory identifier	is returned. Otherwise,	-1 is returned and er-
       rno is set to indicate the error.

       The shmget() function will fail if:

       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_CREAT) and (shmflg&IPC_EXCL)	are true.

       EINVAL	       The size	argument is less than the system-imposed mini-
		       mum or greater than  the	 system-imposed	 maximum.  See

		       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_CREAT) 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  ex-
		       ceeded. See NOTES.

       See attributes(5) for descriptions of the following attributes:

       |      ATTRIBUTE	TYPE	     |	    ATTRIBUTE VALUE	   |
       |Interface Stability	     |Standard			   |

       rctladm(1M),  intro(2), setrctl(2), shmctl(2), shmop(2),	ftok(3C), get-
       pagesize(3C), attributes(5), standards(5)

       The project.max-shm-memory resource control restricts the total	amount
       of  shared memory a project can allocate. The system-imposed maximum on
       the size	of a shared memory segment is  therefore  a  function  of  the
       sizes  of  any  other  shared memory segments the calling project might
       have allocated that are still in	use.  For accounting purposes, segment
       sizes  are  rounded up to the nearest multiple of the system page size.
       See getpagesize(3C).

       The system-imposed limit	on the number of shared	memory identifiers  is
       maintained  on  a  per-project  basis using the project.max-shm-ids re-
       source control.

	See rctladm(1M)	and setrctl(2) for information	about  using  resource

SunOS 5.10			  4 Sep	2003			     shmget(2)


Want to link to this manual page? Use this URL:

home | help