Museum

Home

Lab Overview

Retrotechnology Articles

Online Manuals

⇒ msgget(2) — DG/UX R4.11

Media Vault

Software Library

Restoration Projects

Artifacts Sought

Related Articles

intro(2)

ipcrm(1)

ipcs(1)

msgctl(2)

msgrcv(2)

msgsnd(2)

stdipc(3C)



msgget(2)                         SDK R4.11                        msgget(2)


NAME
       msgget - get message queue identifier

SYNOPSIS
       #include <sys/types.h>
       #include <sys/ipc.h>
       #include <sys/msg.h>

       int   msgget (key, msgflg)
       keyt key;
       int   msgflg;

   where:
       key       A user-defined name for the message queue

       msgflg    A set of flags indicating the requested permission state of
                 the message queue, whether a new message queue should be
                 created, and whether the message queue should be held
                 exclusively

DESCRIPTION
       Msgget returns the message queue identifier associated with key.

       This message queue identifier may then be used in other message queue
       operations as specified by msgctl, msgsnd, and msgrcv.

       Msgget can be used to get the message queue identifier of an existing
       message queue or to create a new message queue as follows:

       Four options are available:

       ·      Create a private message queue.

              In this case, key is IPC_PRIVATE.

              A process can create a "private" message queue by using the
              special IPC_PRIVATE key.  The system will create a message
              queue identifier that is private to the process.  The message
              queue identifier will not be returned to other processes
              regardless of what key value they specify.

              The newly created message queue can be shared among other
              processes by distributing the message queue identifier.

              A process can make multiple msgget operations specifying
              IPC_PRIVATE.  The identifiers returned will be unique and the
              associated message queues will be different.

       ·      Find key if already defined.

              In this case, the IPC_CREAT and IPC_EXCL bits of msgflg are
              clear and key is not IPC_PRIVATE.

              The message queue identifier associated with the given key is
              returned.  If none exists or if one exists but the permission
              rights of the message queue do not include those specified by
              the low-order 9 bits of msgflg, an error is returned.

       ·      Create only if key is not already defined.

              In this case, the IPC_CREAT and IPC_EXCL bits of msgflg are
              both set and key is not IPC_PRIVATE.

              If a message queue identifier already exists for key an error
              is returned.  Otherwise, a message queue identifier and
              associated message queue are created.  The message queue
              identifier will be returned to other processes that specify
              the same key value.

       ·      Find key if already defined, otherwise create.

              In this case, the IPC_CREAT bit of msgflg is set, the IPC_EXCL
              bit of msgflg is clear, and key is not IPC_PRIVATE.

              If a message queue identifier already exists for key, this is
              identical to the second option above.  Otherwise, this is
              identical to the third option above.

       If a new message queue is created, its attributes are initialized as
       follows:

       ·      The message queue creator's user id (msg_perm.cuid) and the
              message queue's user id (msg_perm.uid) are set to the
              effective user id of the calling process.

       ·      The message queue creator's group id (msg_perm.cgid) and the
              message queue's group id (msg_perm.gid) are set to the
              effective group id of the calling process.

       ·      The message queue's permission rights (in msg_perm.mode) are
              set to the low-order 9 bits of msgflg.

       ·      The current size (msg_cbytes), the process id performing the
              last msgsnd and msgrcv operations (msg_lspid and msg_lrpid),
              and the times of the last msgsnd and msgrcv operations
              (msg_stime and msg_rtime) are all set to their initial values.

       ·      The most recent time the message queue attributes were changed
              (msg_ctime) is set to the current time.

       ·      The maximum size (msg_qbytes) is set to the system limit.

ACCESS CONTROL
       See the description of the exception condition EACCES below.

RETURN VALUE
       msqid     A non-negative integer that identifies the message queue
                 associated with key.

       -1        An error occurred.  errno is set to indicate the error.

DIAGNOSTICS
       If a message queue exists for key, errno may be set to one of these
       values:

       EACCES    The permission rights of the message queue do not include
                 those specified by the low-order 9 bits of msgflg.

       EEXIST    Both the IPC_CREAT and IPC_EXCL bits of msgflg are set.

                 If a message queue does not exist for key, errno may be set
                 to one of these values:

       ENOENT    The IPC_CREAT bit of msgflg is not set.

       ENOSPC    Creating a new message queue would cause the system-imposed
                 limit on the number of message queues to be exceeded.

SEE ALSO
       intro(2), ipcrm(1), ipcs(1), msgctl(2), msgrcv(2), msgsnd(2),
       stdipc(3C).


Licensed material--property of copyright holder(s)

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