繁体   English   中英

mq_unlink将errno设置为EEXIST

[英]mq_unlink setting errno to EEXIST

我正在使用消息队列进行服务器中的线程间通信。 该服务器在星期四晚上运行正常。 当我星期一选择备份项目时,它无法创建正在使用的六个队列中的两个,理由是它们已经打开(已设置O _ EXCL)。 事实并非如此,但尽管如此,我还是添加了一个带有错误检查的mq _取消链接调用,并从mq _ open中删除了O _ EXCL标志。

当我编译并运行时,通过mq _ unlink和mq _ open都将errno设置为EEXIST。 这应该是不可能发生的:在任何情况下,mq _ unlink都不能将errno设置为EEXIST,并且只有在设置O _ EXCL标志时,mq _ open才能设置EEXIST。

任何想法为什么会这样?

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM