1
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);

但是,这不是很便携,因为我已经硬编码了默认值,而在不同的平台上可能会有所不同。

是否有可用于获取默认值的系统调用?

非常感谢您的任何建议,

4

1 回答 1

2

您可以通过从 proc 文件系统 /proc/sys/fs/mqueue/msgsize_max 读取来获取该值

于 2013-01-04T09:03:34.927 回答