C dbus:刷新连接?

C dbus:刷新连接?,c,linux,dbus,C,Linux,Dbus,在执行“dbus\u connection\u close”时,是否需要刷新消息队列 换句话说,我是否需要继续执行“dbus\u connection\u read\u write\u dispatch”,直到收到“disconnected”指示,或者停止调度是否安全 更新:我需要以干净的方式关闭与DBus的连接。通过阅读文档,所有的清理工作都必须在“取消引用”连接之前完成,这个过程在IMO中没有很好的文档记录。看,唯一一件事是调度状态功能,它指示连接已关闭 因此,在这里订购可能是您需要注意的事

在执行“dbus\u connection\u close”时,是否需要刷新消息队列

换句话说,我是否需要继续执行“dbus\u connection\u read\u write\u dispatch”,直到收到“disconnected”指示,或者停止调度是否安全

更新:我需要以干净的方式关闭与DBus的连接。通过阅读文档,所有的清理工作都必须在“取消引用”连接之前完成,这个过程在IMO中没有很好的文档记录。

看,唯一一件事是调度状态功能,它指示连接已关闭

因此,在这里订购可能是您需要注意的事项。。i、 e在消息队列中保留内容之前,收到关闭/断开连接的通知

查看,它看起来唯一要做的事情是在失败时返回,即无效连接/空指针。否则,它(似乎)就挂断了

这意味着是的,您可能应该在挂断之前刷新消息队列


免责声明:我只和dbus谈了几次,我绝对不是这方面的权威

经过进一步挖掘,似乎有两种类型的连接:共享和私有

共享连接不能仅在未引用的情况下关闭。此外,除非必须传递传出消息,否则连接似乎不必刷新和调度

在我的例子中,我只需要尽快结束DBus上的通信,而不需要试图挽救任何传出消息


因此,简短的回答是:不-不刷新/不调度需要在
dbus\u connection\u unref

之前完成。我的问题实际上是相反的:我需要关闭与dbus的连接,并确保执行必要的清理。@jldupont:那么是的,您应该刷新消息队列。我将编辑我的答案,使其更为明显。