我对在C/C++程序中删除消息队列的方法感到困惑。我在这里看到:
删除消息队列: 您可以使用ipcrm命令(请参阅
然后是另外一个方法mq_unlink 我现在很困惑,完全删除消息队列的方法是什么呢?
现在请允许我描述我面临的问题。 我在我的应用程序中创建了2个消息队列。 突然出现一个信号并将控件传递给信号处理程序。 在信号处理程序中,我重新启动了服务,但遇到错误“资源暂时不可用”。在信号处理程序中,我使用mq_close()关闭了其中一个队列。也许问题出在我没有关闭另一个队列。 但是我的问题是:
我需要关闭它吗? 我需要删除它吗? 如果要删除它,我需要使用msg_ctl还是mq_unlink?
删除消息队列: 您可以使用ipcrm命令(请参阅
ipcrm(1)
参考页面)或调用msgctl()
并传递IPC_RMID命令代码来删除消息队列。在许多情况下,消息队列仅用于一个程序的范围内,并且您不希望队列在该程序终止后继续存在。作为终止的一部分,调用msgctl()
删除队列。然后是另外一个方法mq_unlink 我现在很困惑,完全删除消息队列的方法是什么呢?
现在请允许我描述我面临的问题。 我在我的应用程序中创建了2个消息队列。 突然出现一个信号并将控件传递给信号处理程序。 在信号处理程序中,我重新启动了服务,但遇到错误“资源暂时不可用”。在信号处理程序中,我使用mq_close()关闭了其中一个队列。也许问题出在我没有关闭另一个队列。 但是我的问题是:
我需要关闭它吗? 我需要删除它吗? 如果要删除它,我需要使用msg_ctl还是mq_unlink?