获取内核消息队列大小的默认值以获取最大消息和最大消息大小

时间:2013-01-04 08:48:56

标签: c message-queue

gcc 4.7.2 c89

您好,

我正在使用posix消息队列:mq_create,mq_send,mq_receive等。

我试图找出内核支持的默认消息大小(attr.msgsize)和最大消息(attr.maxmsg)。

目前我这样做是为了自己设置默认值:

#define MQ_MAXMSGS_DEFAULT 10
#define MQ_MSGSIZE_DEFAULT 8192

当我在命令行上从用户那里得到一个输入时,如果用户输入的值是这些默认值,我将使用它们来设置默认值:

long msg_size = atol(optarg);
attr->mq_msgsize = 
    (msg_size > MQ_MSGSIZE_DEFAULT ? MQ_MSGSIZE_DEFAULT : msg_size);

然而,这不是非常便携,因为我在不同平台上可能会有不同的硬编码默认值。

我是否可以使用系统调用来获取默认值?

非常感谢任何建议,

1 个答案:

答案 0 :(得分:1)

您可以通过从proc文件系统中读取来获取值        的/ proc / SYS / FS / mqueue中/ msgsize_max