shmget(2)

shmget - get shared memory segment identifier

As shipped in IRIX 6.5.15. Unchanged since IRIX 6.5.

NAME
     shmget - get shared memory segment identifier

SYNOPSIS
     #include <sys/types.h>
     #include <sys/ipc.h>
     #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 at least size bytes [see intro(2)] are created for key
     if one of the following are true:

          key is equal to IPC_PRIVATE.

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

     Upon creation, the contents of the shared memory segment are initialized
     to zero, and the data structure associated with the new shared memory
     identifier is initialized as follows:

          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.

          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.

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

          shm_ctime is set equal to the current time.



     shmget fails if one or more of the following are true:

     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 intro(2)] 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
                    memory is not sufficient to fill the request.

     EEXIST         A shared memory identifier exists for key but both
                    (shmflg&IPC_CREAT) and (shmflg&IPC_EXCL) are true.

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

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

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