很高兴见到你。
我制作了一个使用 Qt 提供的 qtdbus 进行通信的应用程序(car<-> 控制器)。看。 https://doc.qt.io/qt-5/qtdbus-remotedrivencar-example.html
幸运的是,我能够验证应用程序的通信工作正常。
但是当我使用 systemd 在系统启动时自动运行应用程序时,我遇到了无法通信的问题。
以下是我写的服务。
控制器系统服务
[Unit]
Description=Controller App execution
ConditionPathExists=/var/run/user/root/wayland-0
[Service]
Type=dbus
BusName=org.example.CarExample.service
EnvironmentFile=/etc/sysconfig/weston
ExecStart=/home/root/controller_app
WorkingDirectory=/home/root/
[Install]
WantedBy=multi-user.target
汽车系统服务
[Unit]
Description=Car app execution
ConditionPathExists=/var/run/user/root/wayland-0
[Service]
Type=dbus
BusName=org.example.CarExample.service
EnvironmentFile=/etc/sysconfig/weston
ExecStart=/home/root/car_app
WorkingDirectory=/home/root/
[Install]
WantedBy=multi-user.target
我的 qdbus 服务
[D-BUS Service]
Name=org.example.CarExample.service
Exec=/usr/bin/car_dbus
我的目的是让使用 qtdbus 的两个应用程序在系统通过 systemd 启动时正常工作。
看来你现在走错了路。
我还应该寻找什么?
答案1
找到了答案。
问题是在系统区域实现服务。
发现qtbus
在用户区进行通信。
因此,如果在 的用户区创建了服务systemd
,则无需连接该服务即可确认其正常运行dbus
。