Museum

Home

Lab Overview

Retrotechnology Articles

⇒ Online Manual

Media Vault

Software Library

Restoration Projects

Artifacts Sought

Related Articles

intro(2)

msgctl(2)

msgop(2)



  msgget(2)                           CLIX                           msgget(2)



  NAME

    msgget - Gets message queue

  LIBRARY

    Standard C Library (libc.a)

  SYNOPSIS

    #include <sys/types.h>

    #include <sys/ipc.h>

    #include <sys/msg.h>

    int msgget(
      key_t key ,
      int msgflg );

  PARAMETERS

    key      Specifies a key used by the kernel to uniquely identify a message
             queue.

    msgflg   Stores message passing control commands and operation permission
             values.

  DESCRIPTION

    The msgget() function returns the message queue identifier associated with
    key.

    A message queue identifier and associated message queue and data structure
    (see intro(2)) are created for key if one of the following are true:

    ⊕  The value of key is equal to IPC_PRIVATE (see the <sys/ipc.h> header
       file).

    ⊕  The value of key does not already have a message queue identifier
       associated with it, and (msgflg  & IPC_CREAT) is true.

    Upon creation, the data structure associated with the new message queue
    identifier is initialized as follows:

    ⊕  The msg_perm.cuid, msg_perm.uid, msg_perm.cgid, and msg_perm.gid
       members are set equal to the effective user ID and effective group ID,
       respectively, of the calling process.

    ⊕  The low-order 9 bits of msg_perm.mode are set equal to the low-order 9
       bits of msgflg.



  2/94 - Intergraph Corporation                                              1






  msgget(2)                           CLIX                           msgget(2)



    ⊕  The msg_qnum ,msg_lspid , msg_lrpid, msg_stime, and msg_rtime members
       (see the <msg.h> header file) are set equal to 0.

    ⊕  The msg_ctime member is set equal to the current time.

    ⊕  The msg_qbytes member is set equal to the system limit.

  EXAMPLES

    The following example creates a new message queue with read/write access
    for the owner.  It creates a message queue if one does not exist, and
    fails if the message queue does exist:

    int msg_queue;

    if ((msg_queue = msgget(75, 0600 | IPC_CREAT | IPC_EXCL)) < 0)
         perror("Could not create message queue");


  RETURN VALUES

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

  ERRORS

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

    [EACCES]    A message queue identifier exists for key, but operation
                permission (see intro(2)) as specified by the low-order 9 bits
                of msgflg would not be granted.

    [ENOENT]    A message queue identifier does not exist for key and msgflg &
                IPC_CREAT)is false.

    [ENOSPC]    A message queue identifier is to be created but the system-
                imposed limit on the maximum number of allowed message queue
                identifiers system wide would be exceeded.

    [EEXIST]    A message queue identifier exists for key but ((msgflg &
                IPC_CREAT) & (msgflg & IPC_EXCL)) is true.

  RELATED INFORMATION

    Functions:  intro(2), msgctl(2), msgop(2)








  2                                              Intergraph Corporation - 2/94




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