标签: c linux dbus
在Linux中通过D-Bus C API调用dbus_connection_send_with_reply时,我传递1000ms的超时,但是当接收应用程序没有回复时,超时永远不会发生。
dbus_connection_send_with_reply
如果接收应用程序确实发送了回复,则会正确接收。
这可能是由于我为libdbus提供服务的方式吗?
我定期致电dbus_connection_dispatch和dbus_connection_dispatch进行维修。
dbus_connection_dispatch
由于
答案 0 :(得分:1)
高度建议您使用D-Bus库其他而不是libdbus,因为正如您所发现的那样,libdbus很难正确使用。如果可能,请使用GDBus或QtDBus,因为它们是更高级别的绑定,更易于使用。如果您需要较低级别的绑定,sd-bus比libdbus更现代。
如果您使用GDBus,则可以使用GMainLoop实现主循环来处理超时,并使用g_dbus_proxy_set_default_timeout()或单个g_dbus_proxy_call()调用的参数设置超时时间。如果您使用sd-bus,则可以使用sd-event。
g_dbus_proxy_set_default_timeout()
g_dbus_proxy_call()