【发布时间】:2015-10-18 16:43:09
【问题描述】:
我对在 C/C++ 程序中删除消息队列的方式感到很困惑。 我看到here那个
删除消息队列
您可以使用 ipcrm 命令删除消息队列(请参阅
ipcrm(1)参考页),或通过调用msgctl()并传递IPC_RMID命令 代码。在许多情况下,消息队列旨在用于 只有一个程序,并且您不希望队列在 该计划的终止。致电msgctl()删除队列作为 终止。
然后是mq_unlink
我很困惑现在完全删除消息队列的方法是什么
现在让我谈谈我面临的问题。
我在我的应用程序中创建了 2 个消息队列
现在突然有信号进来并将控制传递给信号处理程序。在信号处理程序中,我正在重新启动我遇到错误的服务"Resource temporarily Unavailable"。我已经用mq_close() 关闭了队列之一的信号处理程序。可能是问题来了,因为我没有关闭另一个。但我的疑问是:
- 我需要关闭它吗?
- 我需要删除它吗?
- 如果我必须删除它,我需要使用
msg_ctl或mq_unlink吗?
【问题讨论】:
-
这个“在信号处理程序中我正在重新启动服务”可能不是一个好主意。
-
是的,我也同意,这是一个非常旧的代码,我不应该更改它,我只需要解决资源暂时不可用的问题。
-
如果这个问题仍然存在,您可能希望向我们展示相关代码 sn-ps。
标签: c ipc message-queue