dbus_connection_send_with_reply 超时

Posted

技术标签:

【中文标题】dbus_connection_send_with_reply 超时【英文标题】:dbus_connection_send_with_reply timeout 【发布时间】:2018-05-14 08:48:53 【问题描述】:

在Linux中通过D-Bus C API调用dbus_connection_send_with_reply时,我传入了1000ms的超时,但是当接收应用程序没有回复时,超时永远不会发生。

如果接收应用程序确实发送了回复,则正确接收。

这可能是由于我为 libdbus 提供服务的方式造成的吗?

我会定期致电dbus_connection_dispatchdbus_connection_dispatch 进行维修。

谢谢

【问题讨论】:

MCVE 可能会有所帮助... 【参考方案1】:

强烈建议您使用 libdbus 以外的 D-Bus 库其他,因为正如您所发现的那样,libdbus 的正确使用非常繁琐。如果可能,请改用GDBus 或QtDBus,因为它们是更高级的绑定,更易于使用。如果您需要较低级别的绑定,sd-bus 比 libdbus 更现代。

如果您使用 GDBus,您可以使用 GMainLoop 实现一个主循环来处理超时,并使用 g_dbus_proxy_set_default_timeout() 或在单个 g_dbus_proxy_call() 调用的参数中设置超时期限。如果你使用sd-bus,你可以使用sd-event。

【讨论】:

以上是关于dbus_connection_send_with_reply 超时的主要内容,如果未能解决你的问题,请参考以下文章