Seth Woolley's Man Viewer

msgctl(2) - msgctl, msgctl - message control operations - man 2 msgctl

([section] manual, -k keyword, -K [section] search, -f whatis)
man plain no title

MSGCTL(2)                  Linux Programmer's Manual                 MSGCTL(2)



NAME
       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
       This  function  performs  the control operation specified by cmd on the
       message queue(1,3) with identifier msqid.  Legal values for cmd are:

       IPC_STAT
              Copy info(1,5,n) from the message queue(1,3) data structure associated  with
              msqid  into  the  structure  pointed to by buf.  The caller must
              have read(2,n,1 builtins) permission 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(1,3) data structure, updating
              also its msg_ctime member.  The following members of the  struc-
              ture can be updated:

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

              The calling process must have appropriate (probably, root) priv-
              ileges or its effective user-ID must  be  that  of  the  creator
              (msg_perm.cuid)  or  owner  (msg_perm.uid) of the message queue.
              Appropriate privilege (Linux: the  CAP_IPC_RESOURCE  capability)
              is  required  to  raise(3,n)  the  msg_qbytes value beyond the system
              parameter MSGMNB.

       IPC_RMID
              Immediately remove the message queue(1,3)  and  its  associated  data
              structure,  awakening  all  waiting  reader and writer processes
              (with an error(8,n) return and errno  set(7,n,1 builtins)  to  EIDRM).   The  calling
              process must have appropriate (probably, root) privileges or its
              effective user-ID must be either that of the creator or owner of
              the message queue.

RETURN VALUE
       On  success,  the return value will be 0, otherwise -1 with errno indi-
       cating the error.

ERRORS
       On failure, errno is set(7,n,1 builtins) to one of the following:

       EACCES     The argument cmd is equal to IPC_STAT or MSG_STAT,  but  the
                  calling process does not have read(2,n,1 builtins) permission on the message
                  queue(1,3) msqid, and does not have the CAP_IPC_OWNER capability.

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

       EIDRM      The message queue(1,3) was removed.

       EINVAL     Invalid value for cmd or msqid.

       EPERM      The argument cmd has the value IPC_SET or IPC_RMID, but  the
                  effective  user ID of the calling process is not the creator
                  (as found in(1,8)  msg_perm.cuid)  or  the  owner  (as  found  in(1,8)
                  msg_perm.uid)  of  the message queue(1,3), and the process is not
                  privileged (Linux: it does not have the CAP_SYS_ADMIN  capa-
                  bility).

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

CONFORMING TO
       SVr4, SVID.  SVID does not document the EIDRM error(8,n) condition.

SEE ALSO
       msgget(2), msgrcv(2), msgsnd(2), ipc(2,5)(5), capabilities(7)



Linux 2.6.7                       2004-06-17                         MSGCTL(2)

References for this manual (incoming links)