만나서 반가워요.
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를 사용하는 두 개의 응용 프로그램이 제대로 작동하도록 하는 것입니다.
지금은 잘못된 길을 가고 있는 것 같습니다.
또 무엇을 찾아야 합니까?
답변1
답을 찾았습니다.
문제는 시스템 영역에서 서비스를 구현하는 것입니다.
qtbus
사용자 영역에서 통신하는 것을 발견했습니다 .
따라서 의 사용자 영역에서 서비스가 생성되면 systemd
해당 서비스가 제대로 작동하는지 확인하기 위해 서비스에 연결할 필요가 없습니다 dbus
.