我有在C mq_open一个问题,它试图创建一个队列,但我发现下面的错误ENOMEM。我觉得我可能试图创造许多队列而不解开它们,现在我超过了允许的数量。有没有办法显示和删除这些队列?即使在应用程序关闭之后,这似乎仍然存在,所有后续的创建尝试也失败。消息队列ENOMEM
sprintf(idTmp->name, "/%08x%d", (uint32_t) idTmp, rand());
if ((idTmp->mq = mq_open(idTmp->name, O_CREAT, 0x666, NULL)) == -1)
你有*任何*调用'mq_close'吗? – spraff 2012-01-27 15:24:49
我这样做,但代码在被击中之前失败。 – JohnB 2012-01-27 15:30:08
如果您尝试在我的答案中加载'/ dev/mqueue',您会看到什么? – pilcrow 2012-01-27 15:46:35