mq_getattr, mq_setattr — get/set message queue attributes


#include <mqueue.h>
int mq_getattr( mqd_t mqdes,
  struct mq_attr *attr);
int mq_setattr( mqd_t mqdes,
  struct mq_attr *newattr,
  struct mq_attr *oldattr);
[Note] Note

Link with −lrt.


mq_getattr() and mq_setattr() respectively retrieve and modify attributes of the message queue referred to by the descriptor mqdes.

mq_getattr() returns an mq_attr structure in the buffer pointed by attr. This structure is defined as:

struct mq_attr {
  long   mq_flags;
/* Flags: 0 or O_NONBLOCK */
  long   mq_maxmsg;
/* Max. # of messages on queue */
  long   mq_msgsize;
/* Max. message size (bytes) */
  long   mq_curmsgs;
/* # of messages currently in queue */

The mq_flags field contains flags associated with the open message queue description. This field is initialized when the queue is created by mq_open(3). The only flag that can appear in this field is O_NONBLOCK.

The mq_maxmsg and mq_msgsize fields are set when the message queue is created by mq_open(3). The mq_maxmsg field is an upper limit on the number of messages that may be placed on the queue using mq_send(3). The mq_msgsize field is an upper limit on the size of messages that may be placed on the queue. Both of these fields must have a value greater than zero. Two /proc files that place ceilings on the values for these fields are described in mq_open(3).

The mq_curmsgs field returns the number of messages currently held in the queue.

mq_setattr() sets message queue attributes using information supplied in the mq_attr structure pointed to by newattr. The only attribute that can be modified is the setting of the O_NONBLOCK flag in mq_flags. The other fields in newattr are ignored. If the oldattr field is not NULL, then the buffer that it points to is used to return an mq_attr structure that contains the same information that is returned by mq_getattr().


On success mq_getattr() and mq_setattr() return 0; on error, −1 is returned, with errno set to indicate the error.



The descriptor specified in mqdes is invalid.


newattr−>mq_flags contained set bits other than O_NONBLOCK.




On Linux, mq_getattr() and mq_setattr() are library functions layered on top of the mq_getsetattr(2) system call.


mq_close(3), mq_notify(3), mq_open(3), mq_receive(3), mq_send(3), mq_unlink(3), mq_overview(7)


This page is part of release 3.52 of the Linux man-pages project. A description of the project, and information about reporting bugs, can be found at−pages/.

Copyright (C) 2006 Michael Kerrisk <>

Permission is granted to make and distribute verbatim copies of this
manual provided the copyright notice and this permission notice are
preserved on all copies.

Permission is granted to copy and distribute modified versions of this
manual under the conditions for verbatim copying, provided that the
entire resulting derived work is distributed under the terms of a
permission notice identical to this one.

Since the Linux kernel and libraries are constantly changing, this
manual page may be incorrect or out-of-date.  The author(s) assume no
responsibility for errors or omissions, or for damages resulting from
the use of the information contained herein.  The author(s) may not
have taken the same level of care in the production of this manual,
which is licensed free of charge, as they might when working

Formatted or processed versions of this manual, if unaccompanied by
the source, must acknowledge the copyright and authors of this work.