0

我正在使用消息队列在服务器中进行线程间通信。服务器在星期四晚上按预期运行。当我在周一恢复项目时,它无法创建六个正在使用的队列中的两个,理由是它们已经打开(O _EXCL 已设置)。这不应该是这种情况,但是我添加了一个_带有错误检查的 mq unlink 调用,并从 mq open 中删除了 O _EXCL 标志。_

_当我编译并运行时,mq unlink 和 mq _open都将 errno 设置为 EEXIST 。这应该是不可能发生的:mq _unlink 在任何情况下都无法将 errno 设置为 EEXIST,而 mq _open 只能在设置 O _EXCL 标志时设置 EEXIST。

任何想法为什么会发生这种情况?

4

1 回答 1

3

我相信这是一个 Solaris 错误。检查锁定文件(通常/var/tmp/.MQL/...),如果您知道消息队列未在使用中,则将其删除。那应该允许unlink成功。

于 2009-07-08T00:04:23.567 回答