C++ POSIX队列配置
我想知道如何在linux操作系统上配置posix队列。 我知道可以通过以下方式在sysctl.conf和代码中进行编辑:C++ POSIX队列配置,c++,linux,posix,C++,Linux,Posix,我想知道如何在linux操作系统上配置posix队列。 我知道可以通过以下方式在sysctl.conf和代码中进行编辑: mq_open(**,**,**); 是否有其他方法可以配置每个队列的消息数和队列数 您正在混合不同层次的洋葱 在单个队列层上,队列属性(mq_maxmsg和mq_msgsize)在创建队列时是固定的,不能更改mq\u curmsgs更改没有任何意义,除非您希望破坏队列,并且只能通过mq\u getattr查询。mq_标志可以通过mq_setattr`更改,但唯一要更改的标
mq_open(**,**,**);
是否有其他方法可以配置每个队列的消息数和队列数 您正在混合不同层次的洋葱
mq_maxmsg
和mq_msgsize
)在创建队列时是固定的,不能更改mq\u curmsgs
更改没有任何意义,除非您希望破坏队列,并且只能通过mq\u getattr
查询。mq_标志
可以通过mq_setattr`更改,但唯一要更改的标志是切换队列的阻塞/非阻塞状态
实际上,编写简单的命令行实用程序来完成上述大部分工作是很容易的,许多组织已经拥有了它们。它们通常是开发人员最早使用自己编写的队列的程序之一。一些系统会将这些小实用程序合并到应用程序的启动和关闭脚本中MQ\u PRIO\u MAX
)和进程可以打开的队列数(MQ\u open\u MAX
)都有限制。在linux中,这两个问题都不是真正的问题。最大优先级类似于32k-sysconf(\u SC\u MQ\u PRIO\u max)
——如果使用那么多优先级,则会出现一些实际的设计问题。由于linux中的mqd_t
类型是文件描述符,因此打开队列数量的真正限制因素是进程被限制的文件描述符总数/proc/sys/fs/mqueue
中有一些限制文件,可以使用适当的权限进行更改。(a) queues\u max
是系统上允许的队列总数上限,但一旦达到此限制,特权用户仍可创建队列。(b) msgsize_max
是由非特权进程创建的消息的最大消息大小。(c) msg_max
是队列允许的最大消息大小。(d) Linux在/proc/sys/fs/mqueue
中还有两个文件msg_default
和msgsize_default
,这应该是不言而喻的