2013-01-04 61 views
0
gcc 4.7.2 c89 

你好内核消息队列的大小获取默认值,的最大消息和最大邮件大小

我使用POSIX消息队列:mq_create,则mq_send,则mq_receive等

我想找出kernal支持的默认消息大小(attr.msgsize)和最大消息(attr.maxmsg)。

目前,我已经做了这样的设置默认自己:

#define MQ_MAXMSGS_DEFAULT 10 
#define MQ_MSGSIZE_DEFAULT 8192 

当我得到的命令行中的用户输入我会用他们,如果用户输入一个值来设置默认那去beyould这些默认值:

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

然而,这是不是很便携,因为我已经硬编码了的时候可以在不同平台上不同的默认值。

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

非常感谢您的任何建议,

回答

1

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

获得的价值