c - dbus_connection_send_with_reply 超时

标签 c linux dbus

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

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

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

我定期调用 dbus_connection_dispatchdbus_connection_dispatch 进行服务。

谢谢

最佳答案

强烈建议您使用 libdbus 以外的 D-Bus 库,因为正如您所发现的,正确使用 libdbus 非常困难。如果可能,请使用GDBusQtDBus相反,因为它们是更高级的绑定(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/

相关文章:

带有 glib 的 C 和 dbus 字典

c - 在 linux 中网络管理器的接口(interface) "org.freedesktop.NetworkManager.Device"上生成的信号名称

c - 示例中的指针

c - 在 C 中打印字符串时出现无法解释的行为

linux - Qt 蓝牙与 Linux

linux - 在 64 位操作系统上以 32 位模式编译和以 64 位模式编译关于 ioctl 函数的执行有何不同?

linux - Amazon S3 HTTPS 无法在 Linux 上使用 Chrome 和 wget 加载

何时以及何时不在 C 中进行类型转换存在冲突?

c - MPI_Wtime 与实际挂墙时间之间的差异

java - 在 Linux 中使用 echo 使用 Runtime.exec 创建文件?