Linux Python 애플리케이션이 사용자 로그 아웃에서 종료를 올바르게 처리하도록하는 방법은 무엇입니까?


0

사용자가 로그 아웃 할 때 종료하기 전에 정리 작업을 수행 해야하는 Linux GUI 응용 프로그램을 Python으로 작성했습니다. 불행히도, 로그 아웃시 모든 응용 프로그램이 종료 된 것으로 보입니다. POSIX 신호와 DBUS 알림을 처리하려고 시도했지만 아무것도 작동하지 않았습니다. 내가 무엇을 잘못했는지 알 수 있습니까?

응용 프로그램을 시작할 때 일부 종료 처리기를 등록합니다.

# create graceful shutdown mechanisms
signal.signal(signal.SIGTERM, self.on_signal_term)
self.bus = dbus.SessionBus()
self.bus.call_on_disconnection(self.on_session_disconnect)

사용자가 로그 아웃하면 self.on_signal_term 또는 self.on_session_disconnect 가 호출 되지 않습니다 .

이 문제는 여러 시나리오에서 발생합니다 : Unity의 Ubuntu 14.04, Gnome의 Debian Wheezy.

전체 코드 : https://github.com/tuxpoldo/btsync-deb/tree/master/btsync-gui

답변:


0

일반적으로 이것은 XSMP 및을 사용하여 수행됩니다 libSM. 세션 관리자에게 로그 아웃하도록 요청하면 XSMP를 통해 등록 된 모든 클라이언트에 "SaveYourself"메시지가 전송됩니다.

그러나 프로그램은 죽지 않습니다. Xlib가 X11 서버와의 연결이 끊어지면 자동으로 종료됩니다. gtk에이를 비활성화하는 옵션이 있는지 확실하지 않습니다.


파이썬에서 이것을 구현하는 방법에 대한 아이디어가 있습니까? 나는 지금까지 유용한 것을 발견하지 못했다 ....
tuxpoldo
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.