使用 MQ_...() POSIX API 的客户,可能发现 MQ_close()和 MQ_unlink()需要一个订单序列。
从 MQ_unlink()上的手册页:

似乎如果先取消链接、然后关闭、则队列不会关闭。 似乎他们必须在关闭之前取消链接、这对他们来说似乎是错误的、但这一直在基于 POSIX 的其他系统上工作 、包括 Linux 平台。 能否确认 MQ_Close/MQ_unlink 的实现没有问题?
This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
使用 MQ_...() POSIX API 的客户,可能发现 MQ_close()和 MQ_unlink()需要一个订单序列。
从 MQ_unlink()上的手册页:

似乎如果先取消链接、然后关闭、则队列不会关闭。 似乎他们必须在关闭之前取消链接、这对他们来说似乎是错误的、但这一直在基于 POSIX 的其他系统上工作 、包括 Linux 平台。 能否确认 MQ_Close/MQ_unlink 的实现没有问题?
您好、Lawrence、
我要求 TI 的 POSIX 专家对此主题发表评论、同时他们提供的任何特定应用代码使用说明或示例都将有所帮助。 据我了解、消息队列的一般用法按 MQ_open、MQ_send/MQ_receive、MQ_close、MQ_unlink 的顺序排列。 它们首先是关闭还是取消链接、与其他平台相比、预期是什么? 请提供具体详细信息、以便我们完全了解行为并提出请求。
此致、
Ryan
您好、Ryan、
来自客户的另一个快速查询-他们的问题是在此序列中不会删除队列(关闭然后取消链接)。
这是他们担心的边缘条件:"您可能需要 Linux 进程,使用 MQ_open 创建带有 O_creat 标志的 MQ,并提供名称。 然后另一个进程打开该队列的文件描述符。 这两个进程现在可以通过队列相互通信。 现在、第一个过程执行关闭和取消链接。 从技术上讲,第二个进程仍打开此队列,并且在第二个进程关闭它的文件描述符之前,不会销毁该队列。"

是否有办法关闭并销毁队列而不必让第二个进程也关闭队列?
BR、
-rt