시동 프로세스에 systemd를 사용하는 임베디드 Linux 보드가 있습니다. 또한 Qt로 작성된 GUI를 사용하여 명령 줄에서 제대로 실행하고 보드의 터치 스크린이나 버튼을 사용하여 상호 작용할 수 있습니다.systemd로 자동 시작되는 Qt GUI 인스턴스가 입력에 응답하지 않습니다.
이ssh [email protected]
cd ~/
./gui
내가 SystemD를 사용하여 자동으로 시동이 싶습니다 그래서 나는 다음과 같습니다 서비스 파일 작성 : 응용 프로그램을 실행하려면 내가 일반적으로 할
[Unit]
Description=The Qt Gui
After=dropbear.service systemd-logind.service
ConditionFileIsExecutable=/home/user/gui
[Service]
ExecStart=/home/user/gui
Restart=on-abort
[Install]
WantedBy=multi-user.target
보드 부츠 난에 표시 내가 죽일 경우
[ OK ] Started Dropbear SSH2 daemon.
Starting The Qt Gui...
[ OK ] Started The Qt Gui.
그리고 나는 그것을 부팅 및 실행 '추신'후 보드에 SSH 경우 내 프로세스가 시작 볼 수있다 (그리고 다음은 바로 Dropbreak 내부 SSH 서비스 후 내 GUI를 시작하고 해당 로그 systemd expec로 다시 시작합니다. 테드에서 systemd) :
gui.service - The Qt Gui
Loaded: loaded (/etc/systemd/system/gui.service; enabled)
Active: active (running) since Tue, 2012-11-20 21:30:20 UTC; 4min 35s ago
Main PID: 196 (gui)
CGroup: name=systemd:/system/gui.service
└ 196 /home/user/gui
Nov 20 21:30:20 systemd[1]: Starting The Qt Gui...
Nov 20 21:30:20 systemd[1]: Started The Qt Gui.
Nov 20 21:30:22 gui[196]: ARM build
그러나 I를 :
이196 root 26868 S /home/user/gui
systemctl 상태의 출력은 나에게 확인을 보이는
이, 마지막 줄에 'ARM 빌드를'발견 내 코드에서 qDebug() 인쇄 진술 systemd를 사용하여 실행되는 GUI의 인스턴스와 전혀 상호 작용할 수 없습니다! 명령 줄에서 보조 인스턴스를 실행하면 버튼을 누르거나 터치 스크린이 표시되고 GUI가 화면에서 팝업되어 예상대로 작동합니다. 뭐라 구요? 나는 'Type = forking'을 서비스 파일에서 시도했지만 이것 역시 도움이되지 않습니다. 여기에 무엇이 잘못된지에 대한 아이디어가 있습니까? Qt GUI를 명령 줄에서 실행 한 것처럼 systemd를 실행하려면 어떻게해야합니까? 감사합니다 -
아마도 다른 작업 디렉토리와 관련 될 수있다. systemd와 동일한 작업 디렉토리를 사용하고 있는지 확인해야합니다. 명령 줄에서 시작한 응용 프로그램의 작동은 여전히 유효합니다. –
모든 것이 제대로 설정되지 않았을 때 로그인 할 때 문제가 발생한 것일 수 있습니다. 시스템 트레이를 사용할 수 있기 전에 Qt가 로그인 할 때 자동 시작되었을 때 KDE에서 트레이 아이콘을 만들지 않는 문제가있었습니다. 로그인 후 10-20 초 후에 프로그램을 시작하도록 예약 할 수 있습니까? – sashoalm