在Linux中通过D-Bus C API调用dbus_connection_send_with_reply
时,我传入了1000ms的超时,但是当接收应用程序没有回复时,永远不会发生超时。
如果接收应用程序确实发送了回复,则已正确接收。
这可能是由于我为 libdbus 提供服务的方式造成的吗?
我定期调用 dbus_connection_dispatch
和 dbus_connection_dispatch
进行服务。
谢谢
最佳答案
强烈建议您使用 libdbus 以外的 D-Bus 库,因为正如您所发现的,正确使用 libdbus 非常困难。如果可能,请使用GDBus或QtDBus相反,因为它们是更高级的绑定(bind),更易于使用。如果您需要较低级别的绑定(bind),sd-bus比 libdbus 更现代。
如果使用GDBus,可以使用GMainLoop实现主循环来处理超时,并使用 g_dbus_proxy_set_default_timeout()
或在各个 g_dbus_proxy_call()
调用的参数中设置超时时间。如果使用sd-bus,可以使用sd-event .
关于c - dbus_connection_send_with_reply 超时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47573201/