Я написал приложение с графическим интерфейсом Linux на 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 nor self.on_session_disconnect называются.
проблема возникает в нескольких сценариях: Ubuntu 14.04 с Unity, Debian Wheezy с Gnome.
полный код:https://github.com/tuxpoldo/btsync-deb/tree/master/btsync-gui