dbus_connection_send_with_reply超时

时间:2017-11-30 12:11:22

标签: c linux dbus

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

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

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

我定期致电dbus_connection_dispatchdbus_connection_dispatch进行维修。

由于

1 个答案:

答案 0 :(得分:1)

高度建议您使用D-Bus库其他而不是libdbus,因为正如您所发现的那样,libdbus很难正确使用。如果可能,请使用GDBusQtDBus,因为它们是更高级别的绑定,更易于使用。如果您需要较低级别的绑定,sd-bus比libdbus更现代。

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