2013-12-11 1 views
1

나는 gui 응용 프로그램 (C++/Qt)을 개발 중이고 응용 프로그램의 올바른 (문서화 된) 종료 방법을 찾고 있습니다. 어떤 문서가 Unity DE가 gui 응용 프로그램 (Windows에서 WM_QUERYENDSESSION 신호의 일부 아날로그)을 종료한다고 알리는 지에 대한 문서가 있습니까? man 8 shutdown에서Unity, Ubuntu에서 종료 이벤트를 잡는 방법 13.04

+0

DE 앱이 실행 중인지 여부가 중요합니까? DE/OS 독립적 인 방법이있을 수 있습니까? –

답변

0

:

종료 적절한 실행 레벨 아래로 시스템을 가져 오는 (8) 데몬은 init에 요청을 보냅니다. 이것은 RUNLEVEL 환경 변수에 새 런레벨뿐만 아니라 PREVLEVEL 변수에있는 이전 런레벨 (환경 또는/var/run/utmp에서 얻음)을 포함하는 runlevel (7) 이벤트를 발생시킴으로써 수행됩니다. 즉

, 당신은 응용 프로그램에 대한 신호 SIGTERM를 잡을 수 있고, 수신시, /var/run/utmp 읽기 및/또는 /var/log/utmp 또는 runlevel 명령을 실행하여 현재 실행 수준을 확인합니다. runlevel2 0 (prevlevel runlevel)과 같은 값을 반환하면 시스템이 레벨 2에서 레벨 0으로 전환하려고한다는 것을 의미합니다. 즉 종료됩니다. 이렇게하면 현재 종료에 반응하는 데 아주 짧은 시간이 걸릴 수 있습니다 (그러나 나는 그것을 막을 수 있다고 생각하지 않습니다).

+0

잡기 SIGTERM은 DE가 중지 된 후 처리되고 DE/XServer에서 응용 프로그램이 중단되는 것을 막기 위해 Gui 응용 프로그램을 종료하는 올바른 방법이 아닌 것 같습니다. – asaenko

관련 문제