GNU/Linux >> Znalost Linux >  >> Linux

Python - Zachyťte všechny signály

Od Pythonu 3.5 jsou signálové konstanty definovány jako enum, což umožňuje hezčí přístup:

import signal

catchable_sigs = set(signal.Signals) - {signal.SIGKILL, signal.SIGSTOP}
for sig in catchable_sigs:
    signal.signal(sig, print)  # Substitute handler of choice for `print`

Můžete jednoduše procházet signály v signálovém modulu a nastavit je.

for i in [x for x in dir(signal) if x.startswith("SIG")]:
  try:
    signum = getattr(signal,i)
    signal.signal(signum,sighandler)
  except (OSError, RuntimeError) as m: #OSError for Python3, RuntimeError for 2
    print ("Skipping {}".format(i))

Linux
  1. Najít všechny soubory Pythonu v systému souborů Linux?

  2. Linux Signals – příklad programu C pro zachycení signálů (SIGINT, SIGKILL, SIGSTOP atd.)

  3. Základy signálů Linuxu – část I

  1. Jaký je nejlepší způsob, jak vyslat signál všem členům procesní skupiny?

  2. UDP-Broadcast na všech rozhraních

  3. Povolení Ctrl-C přerušit rozšíření C pythonu

  1. signalfd() postrádá signály

  2. Jak zkontrolovat všechny verze pythonu nainstalované na osx a centos

  3. Jak zabít všechny procesy vrácené pgrep