msgctl(2)




NAME

     msgctl - message control operations


SYNOPSIS

     #include <sys/msg.h>

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


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. The contents of this structure  are
           defined in intro(2).

     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.uid
     msg_perm.gid
     msg_perm.mode /* access permission bits only */
     msg_qbytes

          This cmd can only be executed by a process that has  an
          effective  user  ID equal to either that of super-user,
          or to the value of msg_perm.cuid or msg_perm.uid in the
          data  structure  associated with msqid. Only super-user
          can raise the value 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 super-user, or to the value of
           msg_perm.cuid  or   msg_perm.uid in the data structure
           associated with msqid. The buf argument is ignored.


RETURN VALUES

     Upon successful completion, msgctl() returns  0.  Otherwise,
     it returns -1 and sets errno to indicate the error.


ERRORS

     The msgctl() function will fail if:

     EACCES
           The cmd argument is IPC_STAT and operation  permission
           is denied to the calling process (see intro(2)).

     EFAULT
           The buf argument points to an illegal address.

     EINVAL
           The msqid argument is not a valid message queue  iden-
           tifier;  or the cmd argument is not a valid command or
           is IPC_SET and msg_perm.uid  or  msg_perm.gid  is  not
           valid.

     EPERM The cmd argument is IPC_RMID or IPC_SET and the effec-
           tive  user ID of the calling process is not super-user
           and is not equal to  the  value  of  msg_perm.cuid  or
           msg_perm.uid  in  the  data  structure associated with
           msqid.

     EPERM The cmd argument is IPC_SET, an attempt is being  made
           to increase to the value of msg_qbytes, and the effec-
           tive user ID of the calling process is not super-user.

     EOVERFLOW
           The cmd argument is IPC_STAT and uid  or  gid  is  too
           large to be stored in the structure pointed to by buf.


SEE ALSO

     intro(2), msgget(2), msgrcv(2), msgsnd(2)


Man(1) output converted with man2html