
お会いできて嬉しいです。
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
私の意図は、システムがsystemdを介して起動したときにqtdbusを使用する2つのアプリケーションが正しく機能するようにすることです。
今は間違った道を行っているようです。
また何を探すべきですか?
答え1
答えを見つけました。
問題は、システム領域でサービスを実装することです。
qtbus
ユーザーエリアで通信していることがわかりました。
したがって、ユーザー領域でサービスが作成されたら、そのsystemd
サービスが正しく機能していることを確認するためにサービスに接続する必要はありませんdbus
。