gpt4 book ai didi

linux - 在 Linux 中使消息队列非持久化

转载 作者:太空宇宙 更新时间:2023-11-04 11:37:33 24 4
gpt4 key购买 nike

这可能是一个关于消息队列的全新问题,但我们遇到了一些关于它们在 Linux 系统中持久存在的问题。我们正在运行 Fedora 14 并使用消息队列将数据传入和传出线程。

问题是我们创建了一个消息队列:

q = mq_open (strName, O_RDWR | O_CREAT | O_NONBLOCK, 0666, &sQAttr)

哪里:

strName = "/INFO_UPD_Q" or "/POLL_Q" ...
sQAttr.mq_flags = 0;
sQAttr.mq_maxmsg = iMaxNumMessages; /* 1 - 10 */
sQAttr.mq_msgsize = iSzOfMessages;
sQAttr.mq_curmsgs = 0;

我们遇到的问题是,一旦我们更改传递的消息的大小或应用程序崩溃/退出/中止并且队列尚未关闭和清空,程序的下一次运行就会使系统充满旧的消息或未正确打开并且数据未到达线程。

目前我们正在通过更改队列名称然后每隔一段时间重新启动系统来解决这个问题。

我们如何让队列停止这样做?

谢谢。

最佳答案

在 shell 中,您可以使用以下命令查看所有现有队列:

# ipcs -q

你可以删除陈旧的队列:

# ipcrm -q MSQID

MSQID 可从第一个命令的输出中获得。

关于linux - 在 Linux 中使消息队列非持久化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6610612/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com