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