我正在玩弄 POSIX 队列,但遇到了一个问题。创建新队列时,我可以指定例如消息的大小以及队列中可以有多少条消息。我的正常限制是 10,如发现
/proc/sys/fs/mqueue/msg_max
有没有一种简单的方法可以在程序执行期间更改它,除了
echo number > /proc/sys/fs/mqueue/msg_max
也许存在一些用于设置此类内容的系统调用。
我正在玩弄 POSIX 队列,但遇到了一个问题。创建新队列时,我可以指定例如消息的大小以及队列中可以有多少条消息。我的正常限制是 10,如发现
/proc/sys/fs/mqueue/msg_max
有没有一种简单的方法可以在程序执行期间更改它,除了
echo number > /proc/sys/fs/mqueue/msg_max
也许存在一些用于设置此类内容的系统调用。
不。
该限制是系统范围的限制;这就是为什么它在/proc/sys
。如果要更改它,则必须使用echo
已显示的命令。
队列在创建时设置,您无法在中途更改它。您可以通过在创建队列时以特权用户身份运行来增加队列消息的数量。因此,您要么必须运行单独的程序(作为 PU)来创建队列,要么作为 PU 运行、创建队列并在完成后删除权限。您最多可以增加的消息数量仍然受到队列整体大小的限制,因此您必须进行一些划分(减去少量开销字节)。如果您在 Google 周围搜索,则有一个简单的公式。
终于找到了: Re: POSIX Message Queues
编辑 /etc/sysctl.conf 并添加以下行:
# 增加消息队列
fs.mqueue.msg_max = 100
在 Raspbian 上为我工作