Museum

Home

Lab Overview

Retrotechnology Articles

Online Manuals

⇒ shmget(S) — OpenDesktop Software Development System 3.0.0

Media Vault

Software Library

Restoration Projects

Artifacts Sought

Related Articles

shmctl(S)

shmop(S)


 shmget(S)                      6 January 1993                      shmget(S)


 Name

    shmget - get shared memory segment identifier

 Syntax


    cc  . . .  -lc


    #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 shmget system call returns the shared memory identifier associated
    with key.

    A shared memory identifier and associated data structure and shared mem-
    ory segment of at least size bytes are created for key if one of the fol-
    lowing is true:

    +  key is equal to IPCPRIVATE.

    +  key does not already have a shared memory identifier associated with
       it, and (shmflg & IPCCREAT) is ``true''.

    Upon creation, the data structure associated with the new shared memory
    identifier is initialized as follows:

    +  shmperm.cuid, shmperm.uid, shmperm.cgid, and shmperm.gid are set
       equal to the effective user ID and effective group ID, respectively,
       of the calling process.

    +  The low-order 9 bits of shmperm.mode are set equal to the low-order 9
       bits of shmflg.  shmsegsz is set equal to the value of size.

    +  shmlpid, shmnattch, shmatime, and shmdtime are set equal to 0.

    +  shmctime is set equal to the current time.


 Return value

    Upon successful completion, a non-negative integer, namely a shared mem-
    ory identifier is returned.  Otherwise, a value of -1 is returned, and
    errno is set to indicate the error.

 Diagnostics

    The shmget system call fails if one or more of the following is true:

    [EACCES]    A shared memory identifier exists for key, but operation per-
                mission (see Intro(S)) as specified by the low-order 9 bits
                of shmflg would not be granted.

    [EEXIST]    A shared memory identifier exists for key but (shmflg &
                IPCCREAT) and (shmflg & IPCEXCL) are ``true''.

    [EINVAL]    size is less than the system-imposed minimum or greater than
                the system-imposed maximum.

    [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 & IPCCREAT) is ``false''.

    [ENOMEM]    A shared memory identifier and associated shared memory seg-
                ment 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 exceeded.

    [ENOSYS]    The functionality is not supported on this implementation.


 Notes

    The user must explicitly remove shared memory segments after the last
    reference to them has been removed.

 See also

    shmctl(S), shmop(S)

 Standards conformance

    shmget is conformant with:
    AT&T SVID Issue 2;
    and X/Open Portability Guide, Issue 3, 1989.


Typewritten Software • bear@typewritten.org • Edmonds, WA 98026