如何以 systemd 形式运行 qtdbus 应用程序?

如何以 systemd 形式运行 qtdbus 应用程序?

很高兴见到你。

我制作了一个使用 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

相关内容