NAME
mq_setattr - 设置消息队列的属性(REALTIME)
SYNOPSIS
#include <mqueue.h> int mq_setattr(mqd_t mqdes, const struct mq_attr *restrict mqstat, struct mq_attr *restrict omqstat);
Data Structure
An mq_attr structure shall have at least the following fields:
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 */
};
DESCRIPTION
函数 mq_setattr() 能够设置消息队列的属性.
消息队列的4种属性如下:
mq_flags
该属性会在函数mq_open(3) 创建消息队列时被初始化. 他只有2个值O_NONBLOCK(非阻塞)和 0 (阻塞).
下面3种属性会被 mq_setattr() 忽略.
mq_maxmsg
消息队列中最多能容纳的消息个数.
mq_msgsize
每个消息的最大字节数.
- mq_curmsgs
- 当前消息队列中正在排队的消息个数.
如果参数 omqstat 不是NULL, 函数mq_setattr() 将会把旧的属性存储到omqstat 指向的内存.
PARAMETERS
①mqdes [IN]
消息队列的描述符
②mqstat [IN]
指向新的(要设置的)消息队列属性结构体的指针
③omqstat [OUT]
指向旧的消息队列属性结构体的指针
RETURN VALUE
如果函数执行成功, 函数返回0
如果函数执行失败,函数返回 -1 并且设置errno,errno的种别详见下面的ERRORS一节.
ERRORS
[EBADF]
参数 mqdes 不是有效的消息队列描述符.