shmget(2)                                                         shmget(2)




 NAME
      shmget - get shared memory segment

 SYNOPSIS
      #include <sys/shm.h>

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

 DESCRIPTION
      shmget() returns the shared memory identifier associated with key.

      A shared memory identifier and associated data structure and shared
      memory segment of size size bytes (see glossary(9)) are created for
      key if one of the following is true:

           o  key is equal to IPC_PRIVATE.  This call creates a new
              identifier, subject to available resources.  The identifier
              will never be returned by another call to shmget() until it
              has been released by a call to shmctl().  The identifier
              should be used among the calling process and its descendents;
              however, it is not a requirement.  The resource can be
              accessed by any process having the proper permissions.

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

           o  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  shm_perm.cuid, The low-order 9 bits of shm_perm.mode are set
              equal to the low-order 9 bits of shmflg.  shm_segsz is set
              equal to the value of size.

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

           o  shm_ctime is set equal to the current time.

 EXAMPLES
      The following call to shmget() returns a unique shmid for the newly
      created shared memory segment of 4096 bytes:

           int myshmid;

           myshmid = shmget (IPC_PRIVATE, 4096, 0600);





 Hewlett-Packard Company            - 1 -    HP-UX Release 10.20:  July 1996






 shmget(2)                                                         shmget(2)




 RETURN VALUE
      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 indicate the error.

 ERRORS
      shmget() fails if any of the following conditions are encountered:

           [EINVAL]       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 glossary(9)) 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 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 system wide
                          would be exceeded.

           [ENOMEM]       A shared memory identifier and 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) && (shmflg & IPC_EXCL)) is
                          ``true''.

 SEE ALSO
      ipcrm(1), ipcs(1), shmctl(2), shmop(2), stdipc(3C).

 STANDARDS CONFORMANCE
      shmget(): SVID2, SVID3, XPG2, XPG3, XPG4












 Hewlett-Packard Company            - 2 -    HP-UX Release 10.20:  July 1996