• QT DBUS: Not connected to D-Bus server, 注意source /etc/profile


    运行环境:ARM

    运行如下代码:

        QDBusConnection bus = QDBusConnection::sessionBus();
        if(!bus.registerService("com.speedpro.venus")){
            qDebug() << "MessageServer" << bus.lastError().message();
            exit(1);
        }
    

      

    遇到问题: Not connected to D-Bus server

     手动启动server:dbus-daemon --session --print-address --fork --print-pid 

    得到输出:

    unix:abstract=/tmp/dbus-joKjEI2Nlt,guid=ba3900731f265bfec1fa867f5d1061881372
    

    重新运行程序,问题依旧。

    使用如下代码启动DBUS服务:

     eval `dbus-launch --auto-syntax`
    

      哇哦,竟然成功了。

    这行命令的意思是:

    采用eval来执行两次,第一次执行dbus-lauch --auto-syntax,除了启动dbus daemon之外,还输出了下面的内容(改内容在命令行不可见):

    DBUS_SESSION_BUS_ADDRESS='unix:abstract=/tmp/dbus-bIg8pa0xJr,guid=704d5838c9c3408b858966205d1064b4';
    export DBUS_SESSION_BUS_ADDRESS;
    DBUS_SESSION_BUS_PID=1380;

    第二次执行时就将环境变量DBUS_SESSION_BUS_ADDRESS暴露出去了。所有的dbus application在注册DBUS服务时,必须知道这个DBUS_SESSION_BUS_ADDRESS的数据。

    第二个问题:

    Unable to autolaunch a dbus-daemon without a $DISPLAY for X11

    使用 

    eval `dbus-launch --sh-syntax`

    可以。

    一定要记得重新加载系统配置:

    source /etc/profile
  • 相关阅读:
    com,jsj,service,Impl====新闻发布系统(9)
    com.jsj.service=====新闻发布系统(8)
    com.jsj.filter====新闻发布系统(7)
    com.jsj.dao.Impl====新闻发布系统(6)
    com.jsj.utils===新闻发布系统(5)
    最长公共子序列模板(LCS)和LICS模板
    输入输出优化
    zstu-3769 数回文子串
    最长回文子串Manacher算法模板
    HOJ 2678 Stars
  • 原文地址:https://www.cnblogs.com/crazyghostvon/p/qtdbusnotconnect.html
Copyright © 2020-2023  润新知