POSIX 队列和 msg_max

Posted

技术标签:

【中文标题】POSIX 队列和 msg_max【英文标题】:POSIX queues and msg_max 【发布时间】:2012-05-20 11:38:05 【问题描述】:

我正在玩弄 POSIX 队列,但遇到了问题。创建新队列时,我可以指定例如消息的大小以及队列中可以有多少条消息。我的正常限制是 10,如

/proc/sys/fs/mqueue/msg_max

除了

之外,在程序执行期间有没有一种简单的方法来改变它
echo number > /proc/sys/fs/mqueue/msg_max

可能存在一些用于设置此类内容的系统调用。

【问题讨论】:

【参考方案1】:

没有。

该限制是系统范围的限制;这就是为什么它在/proc/sys。如果你想改变它,你必须使用你已经显示的echo 命令。

【讨论】:

【参考方案2】:

队列在创建时设置,您无法在中途更改它。您可以通过在创建队列时以特权用户身份运行来增加队列消息的数量。因此,您要么必须运行单独的程序(作为 PU)来创建队列,要么作为 PU 运行、创建队列并在完成后删除权限。您最多可以增加的消息数量仍然受到队列整体大小的限制,因此您必须进行一些划分(减去少量开销字节)。如果您在 Google 周围搜索,可以找到一个简单的公式。

【讨论】:

【参考方案3】:

终于找到了: Re: POSIX Message Queues

编辑 /etc/sysctl.conf 并添加以下行:

#增加消息队列

fs.mqueue.msg_max = 100

在 Raspbian 上为我工作

【讨论】:

以上是关于POSIX 队列和 msg_max的主要内容,如果未能解决你的问题,请参考以下文章

Posix消息队列

POSIX消息队列

使用 POSIX 消息队列运行 JNA 示例

使用 POSIX 消息队列进行进程内通信

POSIX消息队列

POSIX 消息队列的替代方案