Как служба сеанса Python DBus знает, что пользователь выходит из системы?

Предположим, что у вас есть служба DBus на шине сеанса (шина для каждого пользователя). Ваш сервис может начаться через файл /etc/xdg/autostart/*, или он может начать работу в первый раз, когда какое-либо приложение попытается использовать ваше известное имя службы. В любом случае, предположим, что шина сеанса DBus - это процесс, который запускает вашу службу.

И затем пользователь выходит из системы. Так что же происходит? Отправляет ли DBus любые действия SIG & lt; foo & gt; сигналы к вашему сервису, или он пролив SIGKILL? Есть ли другой способ узнать, что пользователь выходит из системы? В принципе, у меня есть некоторые действия по очистке, которые мне нужно запустить, что включает в себя убийство подпроцессов, начатых с subprocess.Popen и multiprocessing.

Теперь вы, прежде чем говорить, «Popen и multiprocessing зло, не используйте их », в моем текущем эксперименте я их не использую. Я просто пытаюсь понять, как служба Python DBus может подключиться к чему-то, что позволяет ему выполнять действия по очистке, независимо от общей архитектуры.

Любые советы? Любые примеры? Обратите внимание, что мой пример будет работать в GObject.MainLoop и использует Python3 в Ubuntu Precise (или Quantal).

1
задан 14 July 2012 в 22:37

1 ответ

Если вы только заботитесь о запуске под GNOME & amp; Unity вы должны иметь возможность подключиться к интерфейсу DBus менеджера сеансов. Это не только дает вам сообщение «выйти из системы» через сигналы QueryEndSession и EndSession, но также позволяет блокировать выход из системы / выключение, пока вы не очистите, если хотите, через EndSessionResponse. [ ! d0]

Я не уверен, насколько KDE реализует совместимый интерфейс.

4
ответ дан 25 May 2018 в 08:40

Другие вопросы по тегам:

Похожие вопросы: