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_dispatch
和dbus_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 超时的主要内容,如果未能解决你的问题,请参考以下文章