Museum

Home

Lab Overview

Retrotechnology Articles

⇒ Online Manual

Media Vault

Software Library

Restoration Projects

Artifacts Sought

Related Articles

intro(2)

msgget(2)

msgop(2)



  msgctl(2)                           CLIX                           msgctl(2)



  NAME

    msgctl - Message control operations

  LIBRARY

    Standard C Library (libc.a)

  SYNOPSIS

    #include <sys/types.h>

    #include <sys/ipc.h>

    #include <sys/msg.h>

    int msgctl(
      int msqid ,
      int cmd ,
      struct msqid_ds *buf );

  PARAMETERS

    msqid   Represents a message queue ID.

    cmd     Represents a command.

    buf     Points to the msqid_ds data structure.

  DESCRIPTION

    The msgctl() function provides a variety of message control operations as
    specified by cmd.  The following cmds are available:

    IPC_STAT   Place the current value of each member of the data structure
               associated with msqid into the structure pointed to by buf.

    IPC_SET    Set the value of the following members of the data structure
               associated with msqid to the corresponding value found in the
               structure pointed to by buf:

               msg_perm.cuid
               msg_perm.uid
               msg_perm.gid
               msg_perm.mode  /* only low 9 bits */
               msg_qbytes

               This cmd can only be executed by a process that has an
               effective user ID equal to either that of superuser, or to the
               value of msg_perm.cuid or msg_perm.uid in the data structure
               associated with msqid.  Only the superuser can raise the value



  2/94 - Intergraph Corporation                                              1






  msgctl(2)                           CLIX                           msgctl(2)



               of msg_qbytes.

    IPC_RMID   Remove the message queue identifier specified by msqid from the
               system and destroy the message queue and data structure
               associated with it.  This cmd can only be executed by a process
               that has an effective user ID equal to either that of
               superuser, or to the value of msg_perm.cuid or msg_perm.uid in
               the data structure associated with msqid.

  EXAMPLES

    1.  To delete a message queue:

        if (msgctl(msg_queue, IPC_RMID, (struct msqid *)0) < 0)
             perror("Could not remove message queue");


    2.  To show status information on a message queue:

        struct msqid_ds que_buf;
        int msg_queue;

        if (msgctl(msg_queue, IPC_STAT, &stat) < 0)
             perror("Could not get stats on message queue");

        printf("User ID: %d\n", stat.msg_perm.uid);
        printf("Group ID: %d\n", stat.msg_perm.gid);
        printf("Permissions: %0o\n", stat.msg_perm.mode);
        printf("Size of queue: %d\n", stat.msg_qbytes);


  RETURN VALUES

    Upon successful completion, a value of 0 is returned.  Otherwise, a value
    of -1 is returned and errno is set to indicate the error.

  ERRORS

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

    [EINVAL]   The value of msqid is not a valid message queue identifier.

    [EINVAL]   The value of cmd is not a valid command.

    [EACCES]   The value of cmd is equal to IPC_STAT and {READ} operation
               permission is denied to the calling process.  (See intro(2).)

    [EPERM]    The value of cmd is equal to IPC_RMID or IPC_SET.  The
               effective user ID of the calling process is not equal to that
               of superuser, or to the value of msg_perm.cuid or msg_perm.uid
               in the data structure associated with msqid.



  2                                              Intergraph Corporation - 2/94






  msgctl(2)                           CLIX                           msgctl(2)



    [EPERM]    The value of cmd is equal to IPC_SET, an attempt is being made
               to increase to the value of msg_qbytes and the effective user
               ID of the calling process is not equal to that of superuser.

    [EFAULT]   The buf parameter points to an illegal address.

  RELATED INFORMATION

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













































  2/94 - Intergraph Corporation                                              3




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