我在C中的mq_open遇到了一个问题,它试图创建一个队列,但我得到了以下错误。我觉得我可能试图在没有解除链接的情况下创建到许多队列,现在我已经超过了允许的数量。有没有办法显示和删除这些队列?即使在应用程序已经关闭,并且所有后续的创建尝试也失败之后,这种情况似乎仍然存在。
sprintf(idTmp->name, "/%08x%d", (uint32_t) idTmp, rand());
if ((idTmp->mq = mq_open(idTmp->name, O_CREAT, 0x666, NULL)) == -1)发布于 2012-01-27 23:36:25
你会问:
有没有办法显示和删除这些队列?
这并不容易。常见的可疑对象(ipcs、ipcrm)是为System V IPC (msgget(...))设计的,而不是为POSIX IPC (mq_open(...))设计的。
检查您的mq_overview(7)手册页-您的Linux版本可能会在虚拟文件系统上创建消息队列,这可以使用典型的管理工具进行检查。根据手册页,该文件系统是这样公开的:
[root]# mkdir /dev/mqueue
[root]# mount -t mqueue none /dev/mqueue
... now ls and rm your way around ...https://stackoverflow.com/questions/9035612
复制相似问题