Mac Developer Library Developer


This manual page is part of Xcode Tools version 5.0

To obtain these tools:

If you are running a version of Xcode Tools other than 5.0, view the documentation locally:

  • In Xcode

  • In Terminal, using the man(1) command

Reading manual pages

Manual pages are intended as a quick reference for people who already understand a technology.

  • To learn how the manual is organized or to learn about command syntax, read the manual page for manpages(5).

  • For more information about this technology, look for other documentation in the Apple Developer Library.

  • For general information about writing shell scripts, read Shell Scripting Primer.

SHMGET(2)                   BSD System Calls Manual                  SHMGET(2)

     shmget -- get shared memory area identifier

     #include <sys/shm.h>

     shmget(key_t key, size_t size, int shmflg);

     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 struc-ture, structure,
     ture, see shmctl(2)) is initialized as follows:

     •   shm_perm.cuid and shm_perm.uid are set to the effective uid of the calling process.

     •   shm_perm.gid and shm_perm.cgid are set to the effective gid of the calling process.

     •   shm_perm.mode is set to the lower 9 bits of shmflg.

     •   shm_lpid, shm_nattch, shm_atime, and shm_dtime are set to 0

     •   shm_ctime is set to the current time.

     •   shm_segsz is set to the value of size.

     •   The ftok(3) function may be used to generate a key from a pathname.

     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.

     The shmget() system call will fail if:

     [EACCES]           A shared memory segment is already associated with key and the caller has no permis-sion permission
                        sion to access it.

     [EEXIST]           Both IPC_CREAT and IPC_EXCL are set in shmflg, and a shared memory segment is
                        already associated with key.

     [EINVAL]           No shared memory segment is to be created, and a shared memory segment exists for
                        key, but the size of the segment associated with it is less than size, which is non-zero. nonzero.

     [ENOENT]           IPC_CREAT was not set in shmflg and no shared memory segment associated with key was

     [ENOMEM]           There is not enough memory left to created a shared memory segment of the requested

     [ENOSPC]           A new shared memory identifier could not be created because the system limit for the
                        number of shared memory identifiers has been reached.

     #include <sys/types.h>
     #include <sys/ipc.h>
     #include <sys/shm.h>

     shmget(key_t key, int size, int shmflg);

     All of these include files are necessary.  The type of size has changed.

     ftok(3), shmat(2), shmctl(2), shmdt(2), compat(5)

BSD                             August 17, 1995                            BSD

Reporting Problems

The way to report a problem with this manual page depends on the type of problem:

Content errors
Report errors in the content of this documentation with the feedback links below.
Bug reports
Report bugs in the functionality of the described tool or API through Bug Reporter.
Formatting problems
Report formatting mistakes in the online version of these pages with the feedback links below.