ABCDEFGHIJKLMNOPQRSTUVWXYZ

msgctl

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 with identifier msqid.  Legal values for cmd are:

       IPC_STAT
              Copy info from the message queue data structure associated  with
              msqid  into  the  structure  pointed to by buf.  The caller must
              have read 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 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 (probably, root) privileges are  required  to  raise
              the msg_qbytes value beyond the system parameter MSGMNB.

       IPC_RMID
              Immediately  remove  the  message  queue and its associated data
              structure, awakening all waiting  reader  and  writer  processes
              (with an error return and errno set to EIDRM).  The calling pro-
              cess 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 to one of the following:

       EACCES     The  argument  cmd is equal to IPC_STAT but the calling pro-
                  cess does not have read  permission  on  the  message  queue
                  msqid.

       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 was removed.

       EINVAL     Invalid value for cmd or msqid.

       EPERM      The argument cmd has the value IPC_SET or IPC_RMID, but  the
                  calling  process  has insufficient privileges to execute the
                  command.

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 may 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  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 cmd.)

CONFORMING TO
       SVr4, SVID.  SVID does not document the EIDRM error condition.

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



Linux 2.4.1                       2001-02-18                         MSGCTL(2)