qtdbus 애플리케이션을 systemd로 실행하는 방법은 무엇입니까?

qtdbus 애플리케이션을 systemd로 실행하는 방법은 무엇입니까?

만나서 반가워요.

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.

관련 정보