Museum

Home

Lab Overview

Retrotechnology Articles

⇒ Online Manual

Media Vault

Software Library

Restoration Projects

Artifacts Sought

Related Articles

intro(2)

shmctl(2)

shmop(2)



  shmget(2)                           CLIX                           shmget(2)



  NAME

    shmget - Gets the shared memory segment identifier

  LIBRARY

    Standard C Library (libc.a)

  SYNOPSIS

    #include <sys/types.h>

    #include <sys/ipc.h>

    #include <sys/shm.h>

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

  PARAMETERS

    key      Specifies a key used by the kernel to search its shared memory
             table.

    size     Represents the number of bytes of shared memory to create.

    shmflg   Represents an option flag.

  DESCRIPTION

    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:

    ⊕  The value of key is equal to IPC_PRIVATE.

    ⊕  The value of key does not already have a shared memory identifier
       associated with it, and (shmflg & IPC_CREAT) is ``true'' (see the
       <sys/ipc.h> file).

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

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



  2/94 - Intergraph Corporation                                              1






  shmget(2)                           CLIX                           shmget(2)



       -- The low-order 9 bits of shm_perm.mode are set equal to the low-order
          9 bits of shmflg.  The value of shm_segsz is set equal to the value
          of size.

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

       -- The value of shm_ctime is set equal to the current time.

  EXAMPLES

    To get an identifier for an existing shared memory segment (of size 128
    kilobytes that has read write permissions for owner, group, and other) and
    create it if it does not exist:

    if ((shmid = shmget(75, 128 * 1024, 0666 | IPC_CREAT)) < 0) {
         perror("shmget() failed");
         exit(1);
    }


  NOTES

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

  RETURN VALUES

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

  ERRORS

    The shmget() function fails if one or more of the following are true:

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

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

    [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 0.

    [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-



  2                                              Intergraph Corporation - 2/94






  shmget(2)                           CLIX                           shmget(2)



               imposed limit on the maximum number of allowed shared memory
               identifiers system wide would be exceeded.

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

    [EEXIST]   A shared memory identifier exists for key but (shmflg &
               IPC_CREAT) and (shmflg & IPC_EXCL) is ``true'' (see the
               <sys/ipc.h> file).

  RELATED INFORMATION

    Functions:  intro(2), shmctl(2), shmop(2)








































  2/94 - Intergraph Corporation                                              3




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