Ich habe eine Linux-GUI-Anwendung in Python geschrieben, die einige Bereinigungsaufgaben ausführen muss, bevor sie beendet wird, wenn sich der Benutzer abmeldet. Leider scheint es, dass beim Abmelden alle Anwendungen beendet werden. Ich habe versucht, sowohl POSIX-Signale als auch DBUS-Benachrichtigungen zu verarbeiten, aber nichts hat funktioniert. Irgendeine Idee, was ich falsch gemacht haben könnte?
Beim Start der Anwendung registriere ich einige Beendigungshandler:
# 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)
Wenn sich der Benutzer abmeldet, werden weder self.on_signal_term noch self.on_session_disconnect aufgerufen.
Das Problem tritt in mehreren Szenarien auf: Ubuntu 14.04 mit Unity, Debian Wheezy mit Gnome.
Vollständiger Code: https://github.com/tuxpoldo/btsync-deb/tree/master/btsync-gui