在遗留代码中,此代码片段运行良好:
GError* error = NulL;DBusGConnection *systemBus = dbus_g_bus_get_private(DBUS_BUS_SYstem,NulL,&error);
现在,我尝试使用GDBus等效的系统总线:
GError* error = NulL;GDBusConnection *systemBus = g_bus_get_sync(G_BUS_TYPE_SYstem,&error);
这个失败,并且error->消息返回无法连接:没有这样的文件或目录.
有什么不同?
顺便说一句,同一个调用在会话总线上工作:
GError* error = NulL;DBusConnection *sessionBus = g_bus_get_sync(G_BUS_TYPE_SESSION,&error);解决方法 你是否以root权限运行它?根据我的经验,dbus访问系统总线受到限制.会话总线由用户拥有,因此访问永远不会出现问题.
根据这个documentation,当你想建立私人连接时,你应该使用dbus-address-get-for-bus-sync和g-dbus-connection-new-for-address.
总结以上是内存溢出为你收集整理的g_bus_get_sync返回NULL但dbus_g_bus_get_private有效全部内容,希望文章能够帮你解决g_bus_get_sync返回NULL但dbus_g_bus_get_private有效所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)