В фоне сценарий Python, который я должен обнаружить, когда система просто проснулась от, приостанавливают. Что такое хороший путь, который не полагается на корневой сценарий, а скорее на модулях Python, таких как DBus?
Я плохо знаком с dbus, таким образом, я мог действительно использовать некоторый пример кода. Из того, что я читал, это связано с
org.freedesktop.UPower /org/freedesktop/UPower org.freedesktop.UPower.Resuming
Кто-либо может выручить меня с некоторым кодом, который подключает возобновляющийся сигнал к обратному вызову?
Вот некоторый пример кода, который отвечает на мой вопрос:
#!/usr/bin/python
# This is some example code on howto use dbus to detect when the system returns
#+from hibernation or suspend.
import dbus # for dbus communication (obviously)
import gobject # main loop
from dbus.mainloop.glib import DBusGMainLoop # integration into the main loop
def handle_resume_callback():
print "System just resumed from hibernate or suspend"
DBusGMainLoop(set_as_default=True) # integrate into main loob
bus = dbus.SystemBus() # connect to dbus system wide
bus.add_signal_receiver( # defince the signal to listen to
handle_resume_callback, # name of callback function
'Resuming', # singal name
'org.freedesktop.UPower', # interface
'org.freedesktop.UPower' # bus name
)
loop = gobject.MainLoop() # define mainloop
loop.run() # run main loop
Посмотрите учебное руководство .
dbus-pythonИнтерфейс login1 обеспечивает сигнал теперь. Вот измененный код:
#!/usr/bin/python
# slightly different code for handling suspend resume
# using login1 interface signals
#
import dbus # for dbus communication (obviously)
import gobject # main loop
from dbus.mainloop.glib import DBusGMainLoop # integration into the main loop
def handle_sleep_callback(sleeping):
if sleeping:
print "System going to hibernate or sleep"
else:
print "System just resumed from hibernate or suspend"
DBusGMainLoop(set_as_default=True) # integrate into main loob
bus = dbus.SystemBus() # connect to dbus system wide
bus.add_signal_receiver( # defince the signal to listen to
handle_sleep_callback, # name of callback function
'PrepareForSleep', # signal name
'org.freedesktop.login1.Manager', # interface
'org.freedesktop.login1' # bus name
)
loop = gobject.MainLoop() # define mainloop
loop.run() # run main loop