msgctl - message control operations


SYNOPSIS

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

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


DESCRIPTION

       The  function  performs the control operation specified by
       cmd on the message queue  with  identifier  msqid.   Legal
       values for cmd are:

       IPC_STAT    Copy  info  from the message queue data struc­
                   ture into the structure  pointed  to  by  buf.
                   The  user  must have read access privileges on
                   the message queue.

       IPC_SET     Write  the  values  of  some  members  of  the
                   msqid_ds  structure  pointed  to by buf to the
                   message queue data  structure,  updating  also
                   its msg_ctime member.  Considered members from
                   the user supplied struct msqid_ds  pointed  to
                   by buf are

                        msg_perm.uid
                        msg_perm.gid
                        msg_perm.mode  /* only lowest 9-bits */
                        msg_qbytes

                   The  calling process effective user-ID must be
                   one among super-user, creator or owner of  the
                   message  queue.  Only the super-user can raise
                   the msg_qbytes value beyond the system parame­
                   ter MSGMNB.

       IPC_RMID    Remove  immediately  the message queue and its
                   data structures awakening all  waiting  reader
                   and writer processes (with an error return and
                   errno set  to  EIDRM).   The  calling  process
                   effective    user-ID   must   be   one   among
                   super-user, creator or owner  of  the  message
                   queue.


RETURN VALUE

       If  successful,  the  return value will be 0, otherwise -1
       with errno indicating the error.


ERRORS

       For a failing return, errno will be set to one  among  the
       following values:

                  calling process has no read access  permissions
                  on the message queue msqid.

       EFAULT     The  argument cmd has value IPC_SET or IPC_STAT
                  but the address pointed to by buf isn't  acces­
                  sible.

       EIDRM      The message queue was removed.

       EINVAL     Invalid value for cmd or msqid.

       EPERM      The  argument cmd has value IPC_SET or IPC_RMID
                  but the calling process effective  user-ID  has
                  insufficient privileges to execute the command.
                  Note this is also the case of a non  super-user
                  process trying to increase the msg_qbytes value
                  beyond the value specified by the system param­
                  eter MSGMNB.


NOTES

       The IPC_INFO, MSG_STAT and MSG_INFO control calls are used
       by the ipcs(8) program to provide information on allocated
       resources.   In the future these can be modified as needed
       or moved to a proc file system interface.

       Various fields in a  struct  msqid_ds  were  shorts  under
       Linux  2.2  and have become longs under Linux 2.4. To take
       advantage of this, a recompilation under  glibc-2.1.91  or
       later  should  suffice.  (The kernel distinguishes old and
       new calls by a IPC_64 flag in cmd.)


CONFORMING TO

       SVr4, SVID.  SVID does not document the EIDRM error condi­
       tion.


SEE ALSO

       ipc(5), msgget(2), msgsnd(2), msgrcv(2)


Man(1) output converted with man2html