def SignalHandler(app):
def signal_action(signal):
if signal is 1: print("Caught signal SIGHUP(1)")
elif signal is 2: print("Caught signal SIGINT(2)")
elif signal is 15: print("Caught signal SIGTERM(15)")
app.exit_gracefully()
def handler(*args):
# Activate GLib signal handler
signal_action(args[0])
def idle_handler(*args):
# Activate python signal handler
GLib.idle_add(signal_action, priority=GLib.PRIORITY_HIGH)
def install_glib_handler(sig):
unix_signal_add = None
if hasattr(GLib, "unix_signal_add"):
unix_signal_add = GLib.unix_signal_add
elif hasattr(GLib, "unix_signal_add_full"):
unix_signal_add = GLib.unix_signal_add_full
if unix_signal_add:
# Register GLib signal handler
unix_signal_add(GLib.PRIORITY_HIGH, sig, handler, sig)
else:
print("WARNING: Can't install GLib signal handler, too old gi.")
SIGS = [getattr(signal, s, None) for s in "SIGINT SIGTERM SIGHUP".split()]
for sig in filter(None, SIGS):
# Register Python signal handler
signal.signal(sig, idle_handler)
GLib.idle_add(install_glib_handler, sig, priority=GLib.PRIORITY_HIGH)
评论列表
文章目录