Posix消息队列和命令行?

11

我正在编写一些代码,用POSIX消息队列替换TCP套接字。有时程序会崩溃(仍在开发中),并且没有删除创建的队列(没有执行:mq_close() + mq_unlink())。这会导致再次运行代码时出现问题。

有没有办法使用命令行删除/移除这些队列?我尝试使用:ipcs -q。但没有列出任何队列。

我尝试过:lsof | grep queue-name。它们在这里显示。

理想情况下,我想使用:ipcrm

1个回答

22

POSIX IPC对象被实现为虚拟文件系统中的文件。这些文件可以使用ls和rm列出和删除。要对POSIX消息队列执行此操作,我们必须使用以下命令挂载消息队列文件系统:

$ su
Password:
# mkdir /dev/mqueue
# mount -t mqueue none /dev/mqueue
# exit

6
自己接受答案是完全可以的。这将有助于未来查看此问题的其他人理解。 - Mawg says reinstate Monica
2
正如 @Mawg 所提到的,不要犹豫地接受你自己的答案。这个答案对我也很有效。(虽然我会删除 su 并使用 sudo <command>。) - Melebius
1
这在Linux中是正确的。然而,MQ_OVERVIEW(7)手册页也提到这不是POSIX标准所要求的。 - Caleb Reister

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接