#include <mqueue.h>
int mq_setattr(mqd_t mqdes, const struct mq_attr *mqstat, struct mq_attr* omqstat);
int mq_getattr(mqd_t mqdes, struct mq_attr *mqstat);
struct mq_attr {
long mq_flags; /* message queue flags */
long mq_maxmsg; /* maximum number of messages */
long mq_msgsize; /* maximum message size */
long mq_curmsgs; /* number of messages currently queued */
...
};
The message queue attributes corresponding to the following members defined in the mq_attr structure are set to the specified values upon successful completion of mq_setattr():
- mq_flags
- The value of this member is either 0 or O_NONBLOCK.
The values of mq_maxmsg, mq_msgsize, and mq_curmsgs are ignored by mq_setattr().
If omqstat is non-NULL , mq_setattr() stores, in the location referenced by omqstat, the previous message queue attributes and the current queue status. These values are the same as would be returned by a call to mq_getattr() at that point. mq_getattr() is used to get status information and attributes associated with the message queue specified in mqdes. Upon return, the mq_flags member of the mq_attr structure referenced by mqstat has the value that was set when the message queue was created but also with modifications made by subsequent mq_setattr() calls.
The following attributes were set at message queue creation:
mq_maxmsg
mq_msgsize
Upon return, the mq_curmsgs (the number of messages currently on the queue) member of the mq_attr structure referenced by mqstat is set according to the current state of the message queue.
mq_setattr(), if successful, also changes the attributes of the message queue as specified.