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);
然而,这不是非常便携,因为我在不同平台上可能会有不同的硬编码默认值。
我是否可以使用系统调用来获取默认值?
非常感谢任何建议,
答案 0 :(得分:1)
您可以通过从proc文件系统中读取来获取值 的/ proc / SYS / FS / mqueue中/ msgsize_max